From 47224738967c408feeecf0dcc8086ede52c72837 Mon Sep 17 00:00:00 2001
From: ALIENJACK <alienjack@foxmail.com>
Date: Wed, 4 Dec 2024 21:27:21 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=81=97=E6=BC=8F?=
 =?UTF-8?q?=E7=9A=84=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../UI/InGameUI/InGameUI_FilterSetting.cs     | 63 +++++++++++++++++++
 .../InGameUI/InGameUI_FilterSetting.cs.meta   |  2 +
 2 files changed, 65 insertions(+)
 create mode 100644 AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs
 create mode 100644 AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs.meta

diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs
new file mode 100644
index 00000000..4197be4e
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs
@@ -0,0 +1,63 @@
+using AxibugEmuOnline.Client.ClientCore;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using static AxibugEmuOnline.Client.FilterManager;
+
+namespace AxibugEmuOnline.Client
+{
+    public class InGameUI_FilterSetting : ExpandMenu
+    {
+        private InGameUI m_gameUI;
+
+        public InGameUI_FilterSetting(InGameUI gameUI) : base("�˾�", null)
+        {
+            m_gameUI = gameUI;
+        }
+
+        protected override List<OptionMenu> GetOptionMenus()
+        {
+            return App.filter.Filters.Select(f => new FilterMenu(m_gameUI.RomFile, f) as OptionMenu).ToList();
+        }
+
+        public class FilterMenu : ExpandMenu
+        {
+            private Filter m_filter;
+            private List<OptionMenu> m_presetsMenuItems;
+
+            public FilterMenu(RomFile rom, Filter filter) : base(filter.Name, null)
+            {
+                m_filter = filter;
+                m_presetsMenuItems = new List<OptionMenu> { new FilterPresetMenu(rom, m_filter, m_filter.DefaultPreset) };
+                m_presetsMenuItems.AddRange(m_filter.Presets.Select(preset => new FilterPresetMenu(rom, m_filter, preset)));
+            }
+
+            protected override List<OptionMenu> GetOptionMenus()
+            {
+                return m_presetsMenuItems;
+            }
+        }
+
+        public class FilterPresetMenu : ExecuteMenu
+        {
+            private FilterPreset m_preset;
+            private RomFile m_rom;
+            private Filter m_filter;
+
+            public FilterPresetMenu(RomFile rom, Filter filter, FilterPreset preset) : base(preset.Name, null)
+            {
+                m_preset = preset;
+                m_rom = rom;
+                m_filter = filter;
+            }
+
+            public override void OnExcute(OptionUI optionUI, ref bool cancelHide)
+            {
+                m_filter.ApplyPreset(m_preset);
+                App.filter.EnableFilter(m_filter);
+
+                App.filter.SetupFilter(m_rom, m_filter, m_preset);
+            }
+        }
+    }
+}
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs.meta b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs.meta
new file mode 100644
index 00000000..3b91ead9
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: b6c80949e93f37f42a1af843fa9d77fa
\ No newline at end of file

From c421466b84b768f77b58ee4d61d16499b890c185 Mon Sep 17 00:00:00 2001
From: ALIENJACK <alienjack@foxmail.com>
Date: Wed, 4 Dec 2024 23:15:05 +0800
Subject: [PATCH 2/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BE=A7=E8=BE=B9?=
 =?UTF-8?q?=E6=A0=8F=E8=8F=9C=E5=8D=95=20UI=E7=BB=86=E8=8A=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Assets/Editors/CommandDispatcherEditor.cs |    1 -
 .../Assets/Plugins/AxiReplay/NetReplay.cs     |    4 +-
 .../Assets/Plugins/AxiReplay/ReplayData.cs    |    4 +-
 .../Assets/Plugins/AxiReplay/ReplayReader.cs  |    6 +-
 .../Assets/Plugins/AxiReplay/ReplayWriter.cs  |    6 +-
 .../UIEffect/Materials/UI-Effect.mat          | 1403 +++++++++++++----
 .../UIEffect/Scripts/Common/BaseMeshEffect.cs |  364 ++---
 .../UIEffect/Scripts/Common/BlurMode.cs       |   20 +-
 .../UIEffect/Scripts/Common/ColorMode.cs      |   20 +-
 .../UIEffect/Scripts/Common/EffectArea.cs     |  200 +--
 .../UIEffect/Scripts/Common/EffectPlayer.cs   |  270 ++--
 .../UIEffect/Scripts/Common/MaterialCache.cs  |  154 +-
 .../Scripts/Common/MaterialResolver.cs        |  186 +--
 .../UIEffect/Scripts/Common/Matrix2x3.cs      |   52 +-
 .../UIEffect/Scripts/Common/Packer.cs         |  104 +-
 .../Scripts/Common/ParameterTexture.cs        |  324 ++--
 .../UIEffect/Scripts/Common/ShadowStyle.cs    |   22 +-
 .../UIEffect/Scripts/Common/ToneMode.cs       |   22 +-
 .../UIEffect/Scripts/Common/UIEffectBase.cs   |  264 ++--
 .../Scripts/Editor/BaseMeshEffectEditor.cs    |  135 +-
 .../Scripts/Editor/DeprecatedRemover.cs       |   74 +-
 .../Scripts/Editor/UIDissolveEditor.cs        |  306 ++--
 .../Editor/UIEffectCapturedImageEditor.cs     |  314 ++--
 .../UIEffect/Scripts/Editor/UIEffectEditor.cs |  413 ++---
 .../Scripts/Editor/UIGradientEditor.cs        |  165 +-
 .../Scripts/Editor/UIHsvModifierEditor.cs     |  132 +-
 .../UIEffect/Scripts/Editor/UIShadowEditor.cs |   80 +-
 .../UIEffect/Scripts/Editor/UIShinyEditor.cs  |  222 ++-
 .../Editor/UITransitionEffectEditor.cs        |  323 ++--
 .../UIEffect/Scripts/UIDissolve.cs            |  748 ++++-----
 .../UIExtensions/UIEffect/Scripts/UIEffect.cs |  832 +++++-----
 .../UIEffect/Scripts/UIEffectCapturedImage.cs |  890 +++++------
 .../UIExtensions/UIEffect/Scripts/UIFlip.cs   |   98 +-
 .../UIEffect/Scripts/UIGradient.cs            |  676 ++++----
 .../UIEffect/Scripts/UIHsvModifier.cs         |  321 ++--
 .../UIExtensions/UIEffect/Scripts/UIShadow.cs |  705 +++++----
 .../UIExtensions/UIEffect/Scripts/UIShiny.cs  |  694 ++++----
 .../UIEffect/Scripts/UITransitionEffect.cs    |  611 ++++---
 .../DOTween/Modules/DOTweenModuleAudio.cs     |   14 +-
 .../Modules/DOTweenModuleEPOOutline.cs        |    4 +-
 .../DOTween/Modules/DOTweenModulePhysics.cs   |   11 +-
 .../DOTween/Modules/DOTweenModulePhysics2D.cs |   11 +-
 .../DOTween/Modules/DOTweenModuleSprite.cs    |   24 +-
 .../DOTween/Modules/DOTweenModuleUI.cs        |   61 +-
 .../Modules/DOTweenModuleUnityVersion.cs      |  117 +-
 .../DOTween/Modules/DOTweenModuleUtils.cs     |   26 +-
 .../Assets/Resources/UIPrefabs/Disable.anim   |  104 ++
 .../Resources/UIPrefabs/Disable.anim.meta     |    8 +
 .../Resources/UIPrefabs/OptionUI.prefab       |    3 +-
 .../UIPrefabs/SelectBorder.controller         |  127 +-
 AxibugEmuOnline.Client/Assets/Script/App.cs   |  184 +--
 .../Assets/Script/Event/EventInvoker.cs       |    4 -
 .../FixingPixelArtGrille.cs                   |    2 -
 .../Script/Filter/MattiasCRT/MattiasCRT.cs    |    2 +-
 .../IkeyMapperChanger/CommandChanger.cs       |    5 +-
 .../Assets/Script/Manager/AppChat.cs          |    1 -
 .../Assets/Script/Manager/AppEmu.cs           |   20 +-
 .../Assets/Script/Manager/AppLogin.cs         |    2 +-
 .../Assets/Script/Manager/FilterManager.cs    |    3 +-
 .../Assets/Script/Manager/UserDataManager.cs  |    2 -
 .../Script/NesEmulator/NesControllerMapper.cs |    4 +-
 .../Script/NesEmulator/VideoProvider.cs       |    3 -
 .../Assets/Script/Network/NetworkHelper.cs    |    1 -
 .../Assets/Script/UI/AlphaWraper.cs           |    2 -
 .../BgSettingsUI/GlobalFilterListMenuItem.cs  |    2 +-
 .../UI/CommandDispatcher/CommandDispatcher.cs |    4 -
 .../UI/CommandDispatcher/CommandExcuter.cs    |    2 -
 .../Assets/Script/UI/InGameUI/InGameUI.cs     |    2 +-
 .../UI/InGameUI/InGameUI_FilterSetting.cs     |    1 -
 .../Script/UI/InGameUI/InGameUI_Reset.cs      |    4 -
 .../Script/UI/InGameUI/InGameUI_SaveState.cs  |    3 -
 .../Script/UI/ItemPresent/GameObjectPool.cs   |    1 -
 .../ItemPresentEditor/ItemPresentEditor.cs    |    4 +-
 .../Assets/Script/UI/ItemPresent/ItemProxy.cs |    1 -
 .../Assets/Script/UI/OptionUI/OptionUI.cs     |    3 +-
 .../Assets/Script/UI/OverlayUI/OverlayUI.cs   |    2 -
 .../Assets/Script/UI/RoomUI/RoomItem.cs       |    1 -
 .../Assets/Script/UI/Selector.cs              |   37 +-
 .../Assets/Script/UI/UITool.cs                |    1 -
 .../Assets/Script/UI/VirtualSubMenuItem.cs    |    4 +-
 .../Assets/Script/Utility.cs                  |    7 +-
 81 files changed, 6544 insertions(+), 5445 deletions(-)
 create mode 100644 AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/Disable.anim
 create mode 100644 AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/Disable.anim.meta

diff --git a/AxibugEmuOnline.Client/Assets/Editors/CommandDispatcherEditor.cs b/AxibugEmuOnline.Client/Assets/Editors/CommandDispatcherEditor.cs
index 037b0216..87843fbe 100644
--- a/AxibugEmuOnline.Client/Assets/Editors/CommandDispatcherEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Editors/CommandDispatcherEditor.cs
@@ -1,5 +1,4 @@
 using AxibugEmuOnline.Client;
-using System;
 using UnityEditor;
 using UnityEngine;
 namespace AxibugEmuOnline.Editors
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs
index dbf5a0f4..d9f28f7c 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/NetReplay.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using UnityEngine;
+using System.Collections.Generic;
 
 namespace AxiReplay
 {
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayData.cs b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayData.cs
index ab3dd58f..c958f2db 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayData.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayData.cs
@@ -4,7 +4,7 @@ using System.Text;
 
 namespace AxiReplay
 {
-    [StructLayout(LayoutKind.Explicit,Size = 44)]
+    [StructLayout(LayoutKind.Explicit, Size = 44)]
     public struct ReplayHandler
     {
         [FieldOffset(0)]
@@ -51,7 +51,7 @@ namespace AxiReplay
             FM32IP32,
             FM32IP64,
         }
-        public static void GetStringByteData(string str,out byte[] data,out int lenghtWithEnd,Encoding encoding)
+        public static void GetStringByteData(string str, out byte[] data, out int lenghtWithEnd, Encoding encoding)
         {
             data = encoding.GetBytes(str);
             lenghtWithEnd = data.Length + 1;
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayReader.cs b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayReader.cs
index 28677e49..679d0b4c 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayReader.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayReader.cs
@@ -79,7 +79,7 @@ namespace AxiReplay
             }
         }
 
-        
+
         void UpdateNextFrame(int targetFrame)
         {
             //如果已经超过
@@ -128,14 +128,14 @@ namespace AxiReplay
         /// </summary>
         public bool NextFrame(out ReplayStep data)
         {
-            return TakeFrame(1,out data);
+            return TakeFrame(1, out data);
         }
 
         /// <summary>
         /// 往前推进指定帧数量的Input (返回是否变化)
         /// </summary>
         /// <param name="addFrame"></param>
-        public bool TakeFrame(int addFrame,out ReplayStep data)
+        public bool TakeFrame(int addFrame, out ReplayStep data)
         {
             bool Changed = false;
             mCurrFrame += addFrame;
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayWriter.cs b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayWriter.cs
index a4a0f9ea..a65f40db 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayWriter.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/AxiReplay/ReplayWriter.cs
@@ -57,7 +57,7 @@ namespace AxiReplay
         /// 往前推进帧的,指定帧下标
         /// </summary>
         /// <param name="frameInput"></param>
-        public void NextFramebyFrameIdx(int FrameID,UInt64 frameInput)
+        public void NextFramebyFrameIdx(int FrameID, UInt64 frameInput)
         {
             TakeFrame(FrameID - byFrameIdx, frameInput);
             byFrameIdx = FrameID;
@@ -80,7 +80,7 @@ namespace AxiReplay
         {
             if (addFrame < 0)
             {
-                
+
             }
             mCurrFrame += addFrame;
             if (mCurrInput == frameInput)
@@ -140,7 +140,7 @@ namespace AxiReplay
                 temp.Add($"CreateTime => {handler.CreateTime}");
                 temp.Add($"AllFrame => {handler.AllFrame}");
                 temp.Add($"SingleLenght => {handler.SingleLenght}");
-                dbgList.InsertRange(0,temp);
+                dbgList.InsertRange(0, temp);
                 File.WriteAllLines(dumppath, dbgList);
             }
         }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Materials/UI-Effect.mat b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Materials/UI-Effect.mat
index f6fe4b84..3c3817eb 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Materials/UI-Effect.mat
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Materials/UI-Effect.mat
@@ -2,20 +2,24 @@
 %TAG !u! tag:unity3d.com,2011:
 --- !u!21 &-7922399114787830828
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Fill-MediumBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 4
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -27,6 +31,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -38,22 +43,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &-2858933974303803426
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Fill-FastBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 4
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -65,6 +75,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -76,22 +87,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &2100000
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 8
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -103,6 +119,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -114,22 +131,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21011258686512032
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Add
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -141,6 +163,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -152,22 +175,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21026428964303540
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Add-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -179,6 +207,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -190,22 +219,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21027069994720160
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Add
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -217,6 +251,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -228,22 +263,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21039963853110620
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Fill-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -255,6 +295,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -266,22 +307,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21051553669005610
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Add-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -293,6 +339,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -304,22 +351,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21052465468044756
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -331,6 +383,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -342,22 +395,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21066333305903936
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Fill
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -369,6 +427,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -380,22 +439,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21075981732791042
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -407,6 +471,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -418,22 +483,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21088090490190524
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Add-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -441,6 +511,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -452,22 +523,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21101263305935548
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Fill-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -475,6 +551,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -486,22 +563,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21104109730402914
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -509,6 +591,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -520,22 +603,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21105261449943414
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -543,6 +631,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -554,22 +643,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21109508837310648
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -577,6 +671,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -588,22 +683,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21111652731778514
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -611,6 +711,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -622,22 +723,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21116803245207008
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Fill-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -645,6 +751,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -656,22 +763,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21122981926976530
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -683,6 +795,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -694,22 +807,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21123846122543778
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Subtract
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -717,6 +835,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -728,22 +847,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21131018956888464
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Add
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -755,6 +879,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -766,22 +891,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21137937571243814
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Add-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -789,6 +919,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -800,22 +931,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21145977231806290
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Subtract-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -823,6 +959,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -834,22 +971,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21149323267498812
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Add
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -857,6 +999,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -868,22 +1011,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21166942708938158
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Add-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -891,6 +1039,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -902,22 +1051,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21175420890653266
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Add-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -925,6 +1079,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -936,22 +1091,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21185002339311568
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -963,6 +1123,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -974,22 +1135,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21186453925202086
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Fill
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -997,6 +1163,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1008,22 +1175,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21192233312017768
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Add-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1035,6 +1207,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1046,22 +1219,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21197897579119900
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Subtract-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1069,6 +1247,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1080,22 +1259,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21199877168527062
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Fill-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1103,6 +1287,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1114,22 +1299,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21212477583257292
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Add-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1137,6 +1327,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1148,22 +1339,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21232036731743694
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Fill-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1171,6 +1367,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1182,22 +1379,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21240296032697190
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Subtract-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1205,6 +1407,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1216,22 +1419,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21255923207793296
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1239,6 +1447,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1250,22 +1459,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21258387908413332
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Fill-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1273,6 +1487,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1284,22 +1499,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21271924954905420
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1311,6 +1531,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1322,22 +1543,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21293088704516238
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Subtract-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1345,6 +1571,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1356,22 +1583,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21302104002556128
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Add-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1379,6 +1611,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1390,22 +1623,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21303963782861626
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Subtract-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1413,6 +1651,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1424,22 +1663,30 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21305736874167728
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Fill-DetailBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: DETAILBLUR EX FILL
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords:
+  - DETAILBLUR
+  - EX
+  - FILL
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1451,6 +1698,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1462,22 +1710,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21306681885004364
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1485,6 +1738,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1496,22 +1750,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21320668284859588
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Add-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1519,6 +1778,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1530,22 +1790,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21330216548013380
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Subtract-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1553,6 +1818,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1564,22 +1830,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21336195750137204
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Add-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1591,6 +1862,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1602,22 +1874,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21348001306660082
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1625,6 +1902,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1636,22 +1914,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21348190401746968
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Subtract-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1659,6 +1942,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1670,22 +1954,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21359290647485348
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Add-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1693,6 +1982,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1704,22 +1994,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21361395707633912
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Subtract-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1727,6 +2022,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1738,22 +2034,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21364950658099354
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Fill-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1761,6 +2062,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1772,22 +2074,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21378012982496048
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1795,6 +2102,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1806,22 +2114,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21378149258337820
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1829,6 +2142,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1840,22 +2154,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21380371216467826
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Add
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1863,6 +2182,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1874,22 +2194,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21380512493198096
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1897,6 +2222,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1908,22 +2234,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21405390060167114
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Fill
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1935,6 +2266,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1946,22 +2278,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21409008212681998
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Fill-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -1969,6 +2306,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -1980,22 +2318,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21415477525834930
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Subtract
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2003,6 +2346,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2014,22 +2358,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21430195719184000
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Add-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2037,6 +2386,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2048,22 +2398,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21437925998559310
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Subtract-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2071,6 +2426,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2082,22 +2438,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21440092419426906
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Add-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2105,6 +2466,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2116,22 +2478,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21444967751105098
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Fill-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2139,6 +2506,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2150,22 +2518,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21448049851552048
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-MediumBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2177,6 +2550,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2188,22 +2562,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21450770079124654
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Add-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2215,6 +2594,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2226,22 +2606,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21453664544427490
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2249,6 +2634,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2260,22 +2646,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21467518254157304
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Fill-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2287,6 +2678,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2298,22 +2690,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21471923136759810
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Fill-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2321,6 +2718,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2332,22 +2730,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21481346700311234
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Add
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2359,6 +2762,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2370,22 +2774,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21510007115466990
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Add-DetailBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2397,6 +2806,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2408,22 +2818,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21512057394810148
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2435,6 +2850,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2446,22 +2862,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21512499159998750
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Subtract-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2469,6 +2890,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2480,22 +2902,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21532343593189452
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Subtract-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2503,6 +2930,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2514,22 +2942,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21533667629458412
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Add-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2541,6 +2974,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2552,22 +2986,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21541535114347366
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-DetailBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2579,6 +3018,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2590,22 +3030,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21542047413524304
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2613,6 +3058,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2624,22 +3070,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21544716102375364
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Subtract
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2647,6 +3098,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2658,22 +3110,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21545629178218474
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Subtract
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2681,6 +3138,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2692,22 +3150,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21560746059913494
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2715,6 +3178,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2726,22 +3190,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21563344409783084
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2753,6 +3222,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2764,22 +3234,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21569565423378676
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Subtract-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2787,6 +3262,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2798,22 +3274,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21576230583202306
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Fill-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2821,6 +3302,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2832,22 +3314,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21579131057152204
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2855,6 +3342,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2866,22 +3354,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21588405465634874
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Add-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2889,6 +3382,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2900,22 +3394,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21597123945508062
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Fill
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2923,6 +3422,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2934,22 +3434,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21600722614953990
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2957,6 +3462,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -2968,22 +3474,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21605587663562914
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Add-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -2991,6 +3502,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3002,22 +3514,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21610745492908456
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Add-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3025,6 +3542,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3036,22 +3554,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21613427633448394
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3059,6 +3582,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3070,22 +3594,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21626828109100462
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3093,6 +3622,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3104,22 +3634,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21635119553697766
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-FastBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3131,6 +3666,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3142,22 +3678,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21639588145429544
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Add
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3165,6 +3706,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3176,22 +3718,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21653387824655390
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Subtract-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3203,6 +3750,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3214,22 +3762,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21661642508956528
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3237,6 +3790,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3248,22 +3802,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21661871162831128
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Subtract-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3271,6 +3830,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3282,22 +3842,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21663013170243334
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Subtract-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3305,6 +3870,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3316,22 +3882,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21666358306453470
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Fill
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3339,6 +3910,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3350,22 +3922,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21668316807213568
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Subtract-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3373,6 +3950,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3384,22 +3962,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21672675497823216
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Add-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3407,6 +3990,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3418,22 +4002,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21695855126676214
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Fill-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3441,6 +4030,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3452,22 +4042,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21696752101198370
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Subtract-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3475,6 +4070,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3486,22 +4082,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21701854708980174
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Fill-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3509,6 +4110,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3520,22 +4122,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21705644928765800
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Subtract-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3543,6 +4150,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3554,22 +4162,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21706452675254552
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Add-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3581,6 +4194,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3592,22 +4206,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21709795224992298
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Fill-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3619,6 +4238,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3630,22 +4250,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21724091816847400
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3653,6 +4278,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3664,22 +4290,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21732181610132420
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3691,6 +4322,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3702,22 +4334,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21737775158534176
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Subtract-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3725,6 +4362,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3736,22 +4374,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21738761090841570
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Fill-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3759,6 +4402,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3770,22 +4414,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21745487242921564
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Fill-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3793,6 +4442,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3804,22 +4454,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21758506112687914
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Fill
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3831,6 +4486,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3842,22 +4498,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21770831153649604
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Fill-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3865,6 +4526,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3876,22 +4538,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21774372728878936
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Fill-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3899,6 +4566,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3910,22 +4578,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21778934727406118
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Subtract
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3937,6 +4610,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3948,22 +4622,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21783431032102164
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Subtract-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -3971,6 +4650,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -3982,22 +4662,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21786341683153736
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Subtract
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4009,6 +4694,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4020,22 +4706,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21788043290438114
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Add-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4043,6 +4734,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4054,22 +4746,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21793963511044070
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Add-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4081,6 +4778,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4092,22 +4790,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21795397433206836
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Subtract
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4115,6 +4818,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4126,22 +4830,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21800671795679014
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4149,6 +4858,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4160,22 +4870,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21806928481719972
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Subtract-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4183,6 +4898,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4194,22 +4910,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21812566947609066
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-DetailBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4221,6 +4942,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4232,22 +4954,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21846284721920408
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Subtract-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4255,6 +4982,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4266,22 +4994,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21849905517297320
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Fill-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4289,6 +5022,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4300,22 +5034,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21856943469927286
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4323,6 +5062,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4334,22 +5074,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21857184430936670
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4361,6 +5106,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4372,22 +5118,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21866767477205256
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Subtract-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4395,6 +5146,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4406,22 +5158,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21875683972062094
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Subtract
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4429,6 +5186,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4440,22 +5198,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21876982461912130
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Fill-FastBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4463,6 +5226,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4474,22 +5238,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21901242579300618
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Mono-Add
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4497,6 +5266,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4508,22 +5278,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21905403339881664
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Fill-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4535,6 +5310,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4546,22 +5322,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21913035326537372
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Fill-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4569,6 +5350,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4580,22 +5362,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21919113364331978
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Subtract-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4603,6 +5390,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4614,22 +5402,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21930548911372394
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Pixel-Fill
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4637,6 +5430,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4648,22 +5442,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21932619879041906
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Fill
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4671,6 +5470,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4682,22 +5482,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21936983168141514
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Cutoff-Add-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4705,6 +5510,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4716,22 +5522,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21960190213409036
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Hue-Fill-DetailBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4739,6 +5550,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4750,22 +5562,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &21970657036975932
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-MediumBlur
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 5
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4777,6 +5594,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4788,22 +5606,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &3053942024298246613
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Nega-Fill-DetailBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 4
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4815,6 +5638,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4826,22 +5650,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &6699891064212050928
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Grayscale-Fill-DetailBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 4
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4853,6 +5682,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4864,22 +5694,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &8212491840734312675
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Sepia-Fill-DetailBlur-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 4
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4891,6 +5726,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4902,22 +5738,27 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
 --- !u!21 &8343957003602954640
 Material:
-  serializedVersion: 6
+  serializedVersion: 8
   m_ObjectHideFlags: 9
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_Name: UI-Effect-Fill-Ex
   m_Shader: {fileID: 4800000, guid: b868e81d0156245e08c8646b4fb68d7a, type: 3}
-  m_ShaderKeywords: 
+  m_Parent: {fileID: 0}
+  m_ModifiedSerializedProperties: 0
+  m_ValidKeywords: []
+  m_InvalidKeywords: []
   m_LightmapFlags: 4
   m_EnableInstancingVariants: 0
   m_DoubleSidedGI: 0
   m_CustomRenderQueue: -1
   stringTagMap: {}
   disabledShaderPasses: []
+  m_LockedProperties: 
   m_SavedProperties:
     serializedVersion: 3
     m_TexEnvs:
@@ -4929,6 +5770,7 @@ Material:
         m_Texture: {fileID: 0}
         m_Scale: {x: 1, y: 1}
         m_Offset: {x: 0, y: 0}
+    m_Ints: []
     m_Floats:
     - _ColorMask: 15
     - _Stencil: 0
@@ -4940,3 +5782,4 @@ Material:
     m_Colors:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/BaseMeshEffect.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/BaseMeshEffect.cs
index 79b1658c..cdb7086b 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/BaseMeshEffect.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/BaseMeshEffect.cs
@@ -14,23 +14,23 @@ using System.Linq;
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Base class for effects that modify the generated Mesh.
-	/// It works well not only for standard Graphic components (Image, RawImage, Text, etc.) but also for TextMeshPro and TextMeshProUGUI.
-	/// </summary>
-	[ExecuteInEditMode]
-	public abstract class BaseMeshEffect : UIBehaviour, IMeshModifier
-	{
-		//################################
-		// Constant or Static Members.
-		//################################
+    /// <summary>
+    /// Base class for effects that modify the generated Mesh.
+    /// It works well not only for standard Graphic components (Image, RawImage, Text, etc.) but also for TextMeshPro and TextMeshProUGUI.
+    /// </summary>
+    [ExecuteInEditMode]
+    public abstract class BaseMeshEffect : UIBehaviour, IMeshModifier
+    {
+        //################################
+        // Constant or Static Members.
+        //################################
 #if TMP_PRESENT
 		static readonly List<Vector2> s_Uv0 = new List<Vector2> (4096);
 		static readonly List<Vector2> s_Uv1 = new List<Vector2> (4096);
-		#if UNITY_2017_1_OR_NEWER
+#if UNITY_2017_1_OR_NEWER
 		static readonly List<Vector2> s_Uv2 = new List<Vector2> (4096);
 		static readonly List<Vector2> s_Uv3 = new List<Vector2> (4096);
-		#endif
+#endif
 		static readonly List<Vector3> s_Vertices = new List<Vector3> (4096);
 		static readonly List<int> s_Indices = new List<int> (4096);
 		static readonly List<Vector3> s_Normals = new List<Vector3> (4096);
@@ -42,21 +42,21 @@ namespace Coffee.UIExtensions
 		static readonly List<UIVertex> s_UIVertices = new List<UIVertex> (4096);
 		static readonly List<BaseMeshEffect> s_TmpEffects = new List<BaseMeshEffect>(4);
 #endif
-		static readonly Material [] s_EmptyMaterials = new Material [0];
+        static readonly Material[] s_EmptyMaterials = new Material[0];
 
 
-		//################################
-		// Public Members.
-		//################################
-		/// <summary>
-		/// The Graphic attached to this GameObject.
-		/// </summary>
-		public Graphic graphic { get { Initialize (); return _graphic; } }
+        //################################
+        // Public Members.
+        //################################
+        /// <summary>
+        /// The Graphic attached to this GameObject.
+        /// </summary>
+        public Graphic graphic { get { Initialize(); return _graphic; } }
 
-		/// <summary>
-		/// The CanvasRenderer attached to this GameObject.
-		/// </summary>
-		public CanvasRenderer canvasRenderer { get { Initialize (); return _canvasRenderer; } }
+        /// <summary>
+        /// The CanvasRenderer attached to this GameObject.
+        /// </summary>
+        public CanvasRenderer canvasRenderer { get { Initialize(); return _canvasRenderer; } }
 
 #if TMP_PRESENT
 		/// <summary>
@@ -65,40 +65,40 @@ namespace Coffee.UIExtensions
 		public TMP_Text textMeshPro { get { Initialize (); return _textMeshPro; } }
 #endif
 
-		/// <summary>
-		/// The RectTransform attached to this GameObject.
-		/// </summary>
-		public RectTransform rectTransform { get { Initialize (); return _rectTransform; } }
+        /// <summary>
+        /// The RectTransform attached to this GameObject.
+        /// </summary>
+        public RectTransform rectTransform { get { Initialize(); return _rectTransform; } }
 
 #if UNITY_5_6_OR_NEWER
-		/// <summary>
-		/// Additional canvas shader channels to use this component.
-		/// </summary>
-		public virtual AdditionalCanvasShaderChannels requiredChannels { get { return AdditionalCanvasShaderChannels.None; } }
+        /// <summary>
+        /// Additional canvas shader channels to use this component.
+        /// </summary>
+        public virtual AdditionalCanvasShaderChannels requiredChannels { get { return AdditionalCanvasShaderChannels.None; } }
 #endif
 
-		/// <summary>
-		/// Is TextMeshPro or TextMeshProUGUI attached to this GameObject?
-		/// </summary>
-		public bool isTMPro
-		{
-			get
-			{
+        /// <summary>
+        /// Is TextMeshPro or TextMeshProUGUI attached to this GameObject?
+        /// </summary>
+        public bool isTMPro
+        {
+            get
+            {
 #if TMP_PRESENT
 				return textMeshPro != null;
 #else
-				return false;
+                return false;
 #endif
-			}
-		}
+            }
+        }
 
-		/// <summary>
-		/// The material for rendering.
-		/// </summary>
-		public virtual Material material
-		{
-			get
-			{
+        /// <summary>
+        /// The material for rendering.
+        /// </summary>
+        public virtual Material material
+        {
+            get
+            {
 
 #if TMP_PRESENT
 				if (textMeshPro)
@@ -107,17 +107,17 @@ namespace Coffee.UIExtensions
 				}
 				else
 #endif
-				if (graphic)
-				{
-					return graphic.material;
-				}
-				else
-				{
-					return null;
-				}
-			}
-			set
-			{
+                if (graphic)
+                {
+                    return graphic.material;
+                }
+                else
+                {
+                    return null;
+                }
+            }
+            set
+            {
 #if TMP_PRESENT
 				if (textMeshPro)
 				{
@@ -125,17 +125,17 @@ namespace Coffee.UIExtensions
 				}
 				else
 #endif
-				if (graphic)
-				{
-					graphic.material = value;
-				}
-			}
-		}
+                if (graphic)
+                {
+                    graphic.material = value;
+                }
+            }
+        }
 
-		public virtual Material[] materials
-		{
-			get
-			{
+        public virtual Material[] materials
+        {
+            get
+            {
 
 #if TMP_PRESENT
 				if (textMeshPro)
@@ -144,39 +144,39 @@ namespace Coffee.UIExtensions
 				}
 				else
 #endif
-				if (graphic)
-				{
-					_materials [0] = graphic.material;
-					return _materials;
-				}
-				else
-				{
-					return s_EmptyMaterials;
-				}
-			}
-		}
+                if (graphic)
+                {
+                    _materials[0] = graphic.material;
+                    return _materials;
+                }
+                else
+                {
+                    return s_EmptyMaterials;
+                }
+            }
+        }
 
-		/// <summary>
-		/// Call used to modify mesh. (legacy)
-		/// </summary>
-		/// <param name="mesh">Mesh.</param>
-		public virtual void ModifyMesh (Mesh mesh)
-		{
-		}
+        /// <summary>
+        /// Call used to modify mesh. (legacy)
+        /// </summary>
+        /// <param name="mesh">Mesh.</param>
+        public virtual void ModifyMesh(Mesh mesh)
+        {
+        }
 
-		/// <summary>
-		/// Call used to modify mesh.
-		/// </summary>
-		/// <param name="vh">VertexHelper.</param>
-		public virtual void ModifyMesh (VertexHelper vh)
-		{
-		}
+        /// <summary>
+        /// Call used to modify mesh.
+        /// </summary>
+        /// <param name="vh">VertexHelper.</param>
+        public virtual void ModifyMesh(VertexHelper vh)
+        {
+        }
 
-		/// <summary>
-		/// Mark the vertices as dirty.
-		/// </summary>
-		public virtual void SetVerticesDirty ()
-		{
+        /// <summary>
+        /// Mark the vertices as dirty.
+        /// </summary>
+        public virtual void SetVerticesDirty()
+        {
 #if TMP_PRESENT
 			if (textMeshPro)
 			{
@@ -211,14 +211,14 @@ namespace Coffee.UIExtensions
 			}
 			else
 #endif
-			if (graphic)
-			{
-				graphic.SetVerticesDirty ();
-			}
-		}
+            if (graphic)
+            {
+                graphic.SetVerticesDirty();
+            }
+        }
 
-		public void ShowTMProWarning (Shader shader, Shader mobileShader, Shader spriteShader, System.Action<Material> onCreatedMaterial)
-		{
+        public void ShowTMProWarning(Shader shader, Shader mobileShader, Shader spriteShader, System.Action<Material> onCreatedMaterial)
+        {
 #if UNITY_EDITOR && TMP_PRESENT
 			if(!textMeshPro || !textMeshPro.fontSharedMaterial)
 			{
@@ -312,39 +312,39 @@ namespace Coffee.UIExtensions
 			EditorUtility.SetDirty (spriteAsset);
 			return spriteAsset;
 #endif
-		}
+        }
 
 
-		//################################
-		// Protected Members.
-		//################################
-		/// <summary>
-		/// Should the effect modify the mesh directly for TMPro?
-		/// </summary>
-		protected virtual bool isLegacyMeshModifier { get { return false; } }
+        //################################
+        // Protected Members.
+        //################################
+        /// <summary>
+        /// Should the effect modify the mesh directly for TMPro?
+        /// </summary>
+        protected virtual bool isLegacyMeshModifier { get { return false; } }
 
 
-		protected virtual void Initialize ()
-		{
-			if (!_initialized)
-			{
-				_initialized = true;
-				_graphic = _graphic ?? GetComponent<Graphic> ();
-				_canvasRenderer = _canvasRenderer ?? GetComponent<CanvasRenderer> ();
-				_rectTransform = _rectTransform ?? GetComponent<RectTransform> ();
+        protected virtual void Initialize()
+        {
+            if (!_initialized)
+            {
+                _initialized = true;
+                _graphic = _graphic ?? GetComponent<Graphic>();
+                _canvasRenderer = _canvasRenderer ?? GetComponent<CanvasRenderer>();
+                _rectTransform = _rectTransform ?? GetComponent<RectTransform>();
 #if TMP_PRESENT
 				_textMeshPro = _textMeshPro ?? GetComponent<TMP_Text> ();
 #endif
-			}
-		}
+            }
+        }
 
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable ()
-		{
-			_initialized = false;
-			SetVerticesDirty ();
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            _initialized = false;
+            SetVerticesDirty();
 #if TMP_PRESENT
 			if (textMeshPro)
 			{
@@ -360,27 +360,27 @@ namespace Coffee.UIExtensions
 #endif
 
 #if UNITY_5_6_OR_NEWER
-			if (graphic)
-			{
-				AdditionalCanvasShaderChannels channels = requiredChannels;
-				var canvas = graphic.canvas;
-				if (canvas && (canvas.additionalShaderChannels & channels) != channels)
-				{
-					Debug.LogWarningFormat (this, "Enable {1} of Canvas.additionalShaderChannels to use {0}.", GetType ().Name, channels);
-				}
-			}
+            if (graphic)
+            {
+                AdditionalCanvasShaderChannels channels = requiredChannels;
+                var canvas = graphic.canvas;
+                if (canvas && (canvas.additionalShaderChannels & channels) != channels)
+                {
+                    Debug.LogWarningFormat(this, "Enable {1} of Canvas.additionalShaderChannels to use {0}.", GetType().Name, channels);
+                }
+            }
 #endif
-		}
+        }
 
-		/// <summary>
-		/// This function is called when the behaviour becomes disabled () or inactive.
-		/// </summary>
-		protected override void OnDisable ()
-		{
+        /// <summary>
+        /// This function is called when the behaviour becomes disabled () or inactive.
+        /// </summary>
+        protected override void OnDisable()
+        {
 #if TMP_PRESENT
 			TMPro_EventManager.TEXT_CHANGED_EVENT.Remove (OnTextChanged);
 #endif
-			SetVerticesDirty ();
+            SetVerticesDirty();
 
 #if UNITY_EDITOR && TMP_PRESENT
 			if (graphic && textMeshPro)
@@ -388,14 +388,14 @@ namespace Coffee.UIExtensions
 				GraphicRebuildTracker.UnTrackGraphic (graphic);
 			}
 #endif
-		}
+        }
 
 
-		/// <summary>
-		/// LateUpdate is called every frame, if the Behaviour is enabled.
-		/// </summary>
-		protected virtual void LateUpdate ()
-		{
+        /// <summary>
+        /// LateUpdate is called every frame, if the Behaviour is enabled.
+        /// </summary>
+        protected virtual void LateUpdate()
+        {
 #if TMP_PRESENT
 			if (textMeshPro)
 			{
@@ -406,35 +406,35 @@ namespace Coffee.UIExtensions
 				_isTextMeshProActive = textMeshPro.isActiveAndEnabled;
 			}
 #endif
-		}
+        }
 
-		/// <summary>
-		/// Callback for when properties have been changed by animation.
-		/// </summary>
-		protected override void OnDidApplyAnimationProperties ()
-		{
-			SetVerticesDirty ();
-		}
+        /// <summary>
+        /// Callback for when properties have been changed by animation.
+        /// </summary>
+        protected override void OnDidApplyAnimationProperties()
+        {
+            SetVerticesDirty();
+        }
 
 #if UNITY_EDITOR
-		/// <summary>
-		/// This function is called when the script is loaded or a value is changed in the inspector (Called in the editor only).
-		/// </summary>
-		protected override void OnValidate ()
-		{
-			SetVerticesDirty ();
-		}
+        /// <summary>
+        /// This function is called when the script is loaded or a value is changed in the inspector (Called in the editor only).
+        /// </summary>
+        protected override void OnValidate()
+        {
+            SetVerticesDirty();
+        }
 #endif
 
 
-		//################################
-		// Private Members.
-		//################################
-		bool _initialized;
-		CanvasRenderer _canvasRenderer;
-		RectTransform _rectTransform;
-		Graphic _graphic;
-		Material [] _materials = new Material [1];
+        //################################
+        // Private Members.
+        //################################
+        bool _initialized;
+        CanvasRenderer _canvasRenderer;
+        RectTransform _rectTransform;
+        Graphic _graphic;
+        Material[] _materials = new Material[1];
 
 #if TMP_PRESENT
 		bool _isTextMeshProActive;
@@ -532,12 +532,12 @@ namespace Coffee.UIExtensions
 			mesh.GetTangents (s_Tangents);
 			mesh.GetIndices (s_Indices, 0);
 
-		#if UNITY_2017_1_OR_NEWER
+#if UNITY_2017_1_OR_NEWER
 			mesh.GetUVs (2, s_Uv2);
 			mesh.GetUVs (3, s_Uv3);
 			bool useUv2 = 0 < s_Uv2.Count;
 			bool useUv3 = 0 < s_Uv3.Count;
-		#endif
+#endif
 			
 			s_UIVertices.Clear();
 			UIVertex v = default(UIVertex);
@@ -547,12 +547,12 @@ namespace Coffee.UIExtensions
 				v.color = s_Colors[i];
 				v.uv0 = s_Uv0[i];
 				v.uv1 = s_Uv1[i];
-		#if UNITY_2017_1_OR_NEWER
+#if UNITY_2017_1_OR_NEWER
 				if (useUv2 && i < s_Uv2.Count)
 					v.uv2 = s_Uv2[i];
 				if (useUv3 && i < s_Uv3.Count)
 					v.uv3 = s_Uv3[i];
-		#endif
+#endif
 				v.normal = s_Normals[i];
 				v.tangent = s_Tangents[i];
 
@@ -561,5 +561,5 @@ namespace Coffee.UIExtensions
 			s_VertexHelper.AddUIVertexStream(s_UIVertices, s_Indices);
 		}
 #endif
-	}
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/BlurMode.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/BlurMode.cs
index fcc3cab6..f2904583 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/BlurMode.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/BlurMode.cs
@@ -1,13 +1,13 @@
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Blur effect mode.
-	/// </summary>
-	public enum BlurMode
-	{
-		None = 0,
-		FastBlur = 1,
-		MediumBlur = 2,
-		DetailBlur = 3,
-	}
+    /// <summary>
+    /// Blur effect mode.
+    /// </summary>
+    public enum BlurMode
+    {
+        None = 0,
+        FastBlur = 1,
+        MediumBlur = 2,
+        DetailBlur = 3,
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ColorMode.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ColorMode.cs
index 8a7aae4c..5506aa8b 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ColorMode.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ColorMode.cs
@@ -1,13 +1,13 @@
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Color effect mode.
-	/// </summary>
-	public enum ColorMode
-	{
-		Multiply = 0,
-		Fill = 1,
-		Add = 2,
-		Subtract = 3,
-	}
+    /// <summary>
+    /// Color effect mode.
+    /// </summary>
+    public enum ColorMode
+    {
+        Multiply = 0,
+        Fill = 1,
+        Add = 2,
+        Subtract = 3,
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/EffectArea.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/EffectArea.cs
index d59c9deb..bdae921c 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/EffectArea.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/EffectArea.cs
@@ -3,110 +3,110 @@ using UnityEngine.UI;
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Area for effect.
-	/// </summary>
-	public enum EffectArea
-	{
-		RectTransform,
-		Fit,
-		Character,
-	}
+    /// <summary>
+    /// Area for effect.
+    /// </summary>
+    public enum EffectArea
+    {
+        RectTransform,
+        Fit,
+        Character,
+    }
 
-	public static class EffectAreaExtensions
-	{
-		static readonly Rect rectForCharacter = new Rect(0, 0, 1, 1);
-		static readonly Vector2 [] splitedCharacterPosition = { Vector2.up, Vector2.one, Vector2.right, Vector2.zero };
+    public static class EffectAreaExtensions
+    {
+        static readonly Rect rectForCharacter = new Rect(0, 0, 1, 1);
+        static readonly Vector2[] splitedCharacterPosition = { Vector2.up, Vector2.one, Vector2.right, Vector2.zero };
 
-		/// <summary>
-		/// Gets effect for area.
-		/// </summary>
-		public static Rect GetEffectArea (this EffectArea area, VertexHelper vh, Rect rectangle, float aspectRatio = -1)
-		{
-			Rect rect = default(Rect);
-			switch (area)
-			{
-				case EffectArea.RectTransform:
-					rect = rectangle;
-					break;
-				case EffectArea.Character:
-					rect = rectForCharacter;
-					break;
-				case EffectArea.Fit:
-					// Fit to contents.
-					UIVertex vertex = default (UIVertex);
-					float xMin = float.MaxValue;
-					float yMin = float.MaxValue;
-					float xMax = float.MinValue;
-					float yMax = float.MinValue;
-					for (int i = 0; i < vh.currentVertCount; i++)
-					{
-						vh.PopulateUIVertex(ref vertex, i);
-						float x = vertex.position.x;
-						float y = vertex.position.y;
-						xMin = Mathf.Min(xMin, x);
-						yMin = Mathf.Min(yMin, y);
-						xMax = Mathf.Max(xMax, x);
-						yMax = Mathf.Max(yMax, y);
-					}
-					rect.Set (xMin, yMin, xMax - xMin, yMax - yMin);
-					break;
-				default:
-					rect = rectangle;
-					break;
-			}
+        /// <summary>
+        /// Gets effect for area.
+        /// </summary>
+        public static Rect GetEffectArea(this EffectArea area, VertexHelper vh, Rect rectangle, float aspectRatio = -1)
+        {
+            Rect rect = default(Rect);
+            switch (area)
+            {
+                case EffectArea.RectTransform:
+                    rect = rectangle;
+                    break;
+                case EffectArea.Character:
+                    rect = rectForCharacter;
+                    break;
+                case EffectArea.Fit:
+                    // Fit to contents.
+                    UIVertex vertex = default(UIVertex);
+                    float xMin = float.MaxValue;
+                    float yMin = float.MaxValue;
+                    float xMax = float.MinValue;
+                    float yMax = float.MinValue;
+                    for (int i = 0; i < vh.currentVertCount; i++)
+                    {
+                        vh.PopulateUIVertex(ref vertex, i);
+                        float x = vertex.position.x;
+                        float y = vertex.position.y;
+                        xMin = Mathf.Min(xMin, x);
+                        yMin = Mathf.Min(yMin, y);
+                        xMax = Mathf.Max(xMax, x);
+                        yMax = Mathf.Max(yMax, y);
+                    }
+                    rect.Set(xMin, yMin, xMax - xMin, yMax - yMin);
+                    break;
+                default:
+                    rect = rectangle;
+                    break;
+            }
 
 
-			if(0 < aspectRatio)
-			{
-				if (rect.width < rect.height)
-				{
-					rect.width =  rect.height * aspectRatio;
-				}
-				else
-				{
-					rect.height = rect.width / aspectRatio;
-				}
-			}
-			return rect;
-		}
+            if (0 < aspectRatio)
+            {
+                if (rect.width < rect.height)
+                {
+                    rect.width = rect.height * aspectRatio;
+                }
+                else
+                {
+                    rect.height = rect.width / aspectRatio;
+                }
+            }
+            return rect;
+        }
 
-		/// <summary>
-		/// Gets position factor for area.
-		/// </summary>
-		public static void GetPositionFactor (this EffectArea area, int index, Rect rect, Vector2 position, bool isText, bool isTMPro, out float x, out float y)
-		{
-			if (isText && area == EffectArea.Character)
-			{
-				index = isTMPro ? (index + 3) % 4 : index % 4;
-				x = splitedCharacterPosition [index].x;
-				y = splitedCharacterPosition [index].y;
-			}
-			else if (area == EffectArea.Fit)
-			{
-				x = Mathf.Clamp01 ((position.x - rect.xMin) / rect.width);
-				y = Mathf.Clamp01 ((position.y - rect.yMin) / rect.height);
-			}
-			else
-			{
-				x = Mathf.Clamp01 (position.x / rect.width + 0.5f);
-				y = Mathf.Clamp01 (position.y / rect.height + 0.5f);
-			}
-		}
+        /// <summary>
+        /// Gets position factor for area.
+        /// </summary>
+        public static void GetPositionFactor(this EffectArea area, int index, Rect rect, Vector2 position, bool isText, bool isTMPro, out float x, out float y)
+        {
+            if (isText && area == EffectArea.Character)
+            {
+                index = isTMPro ? (index + 3) % 4 : index % 4;
+                x = splitedCharacterPosition[index].x;
+                y = splitedCharacterPosition[index].y;
+            }
+            else if (area == EffectArea.Fit)
+            {
+                x = Mathf.Clamp01((position.x - rect.xMin) / rect.width);
+                y = Mathf.Clamp01((position.y - rect.yMin) / rect.height);
+            }
+            else
+            {
+                x = Mathf.Clamp01(position.x / rect.width + 0.5f);
+                y = Mathf.Clamp01(position.y / rect.height + 0.5f);
+            }
+        }
 
-		/// <summary>
-		/// Normalize vertex position by local matrix.
-		/// </summary>
-		public static void GetNormalizedFactor (this EffectArea area, int index, Matrix2x3 matrix, Vector2 position, bool isText, out Vector2 nomalizedPos)
-		{
-			if (isText && area == EffectArea.Character)
-			{
-				nomalizedPos = matrix * splitedCharacterPosition [(index + 3) % 4];
-			}
-			else
-			{
-				nomalizedPos = matrix * position;
-			}
-		}
-	}
+        /// <summary>
+        /// Normalize vertex position by local matrix.
+        /// </summary>
+        public static void GetNormalizedFactor(this EffectArea area, int index, Matrix2x3 matrix, Vector2 position, bool isText, out Vector2 nomalizedPos)
+        {
+            if (isText && area == EffectArea.Character)
+            {
+                nomalizedPos = matrix * splitedCharacterPosition[(index + 3) % 4];
+            }
+            else
+            {
+                nomalizedPos = matrix * position;
+            }
+        }
+    }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/EffectPlayer.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/EffectPlayer.cs
index f2b11de4..36a029a8 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/EffectPlayer.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/EffectPlayer.cs
@@ -1,156 +1,156 @@
-using UnityEngine;
-using System;
+using System;
 using System.Collections.Generic;
+using UnityEngine;
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Effect player.
-	/// </summary>
-	[Serializable]
-	public class EffectPlayer
-	{
-		//################################
-		// Public Members.
-		//################################
-		/// <summary>
-		/// Gets or sets a value indicating whether is playing.
-		/// </summary>
-		[Header("Effect Player")]
-		[Tooltip("Playing.")]
-		public bool play = false;
+    /// <summary>
+    /// Effect player.
+    /// </summary>
+    [Serializable]
+    public class EffectPlayer
+    {
+        //################################
+        // Public Members.
+        //################################
+        /// <summary>
+        /// Gets or sets a value indicating whether is playing.
+        /// </summary>
+        [Header("Effect Player")]
+        [Tooltip("Playing.")]
+        public bool play = false;
 
-		/// <summary>
-		/// Gets or sets the delay before looping.
-		/// </summary>
-		[Tooltip("Initial play delay.")]
-		[Range(0f, 10f)]
-		public float initialPlayDelay = 0;
+        /// <summary>
+        /// Gets or sets the delay before looping.
+        /// </summary>
+        [Tooltip("Initial play delay.")]
+        [Range(0f, 10f)]
+        public float initialPlayDelay = 0;
 
-		/// <summary>
-		/// Gets or sets the duration.
-		/// </summary>
-		[Tooltip("Duration.")]
-		[Range(0.01f,10f)]
-		public float duration = 1;
+        /// <summary>
+        /// Gets or sets the duration.
+        /// </summary>
+        [Tooltip("Duration.")]
+        [Range(0.01f, 10f)]
+        public float duration = 1;
 
-		/// <summary>
-		/// Gets or sets a value indicating whether can loop.
-		/// </summary>
-		[Tooltip("Loop.")]
-		public bool loop = false;
+        /// <summary>
+        /// Gets or sets a value indicating whether can loop.
+        /// </summary>
+        [Tooltip("Loop.")]
+        public bool loop = false;
 
-		/// <summary>
-		/// Gets or sets the delay before looping.
-		/// </summary>
-		[Tooltip("Delay before looping.")]
-		[Range(0f,10f)]
-		public float loopDelay = 0;
+        /// <summary>
+        /// Gets or sets the delay before looping.
+        /// </summary>
+        [Tooltip("Delay before looping.")]
+        [Range(0f, 10f)]
+        public float loopDelay = 0;
 
-		/// <summary>
-		/// Gets or sets the update mode.
-		/// </summary>
-		[Tooltip("Update mode")]
-		public AnimatorUpdateMode updateMode = AnimatorUpdateMode.Normal;
+        /// <summary>
+        /// Gets or sets the update mode.
+        /// </summary>
+        [Tooltip("Update mode")]
+        public AnimatorUpdateMode updateMode = AnimatorUpdateMode.Normal;
 
-		static List<Action> s_UpdateActions;
+        static List<Action> s_UpdateActions;
 
-		/// <summary>
-		/// Register player.
-		/// </summary>
-		public void OnEnable(Action<float> callback = null)
-		{
+        /// <summary>
+        /// Register player.
+        /// </summary>
+        public void OnEnable(Action<float> callback = null)
+        {
 
-			if (s_UpdateActions == null)
-			{
-				s_UpdateActions = new List<Action>();
-				Canvas.willRenderCanvases += () =>
-				{
-					var count = s_UpdateActions.Count;
-					for (int i = 0; i < count; i++)
-					{
-						s_UpdateActions[i].Invoke();
-					}
-				};
-			}
-			s_UpdateActions.Add(OnWillRenderCanvases);
+            if (s_UpdateActions == null)
+            {
+                s_UpdateActions = new List<Action>();
+                Canvas.willRenderCanvases += () =>
+                {
+                    var count = s_UpdateActions.Count;
+                    for (int i = 0; i < count; i++)
+                    {
+                        s_UpdateActions[i].Invoke();
+                    }
+                };
+            }
+            s_UpdateActions.Add(OnWillRenderCanvases);
 
-			if (play)
-			{
-				_time = -initialPlayDelay;
-			}
-			else
-			{
-				_time = 0;
-			}
-			_callback = callback;
-		}
+            if (play)
+            {
+                _time = -initialPlayDelay;
+            }
+            else
+            {
+                _time = 0;
+            }
+            _callback = callback;
+        }
 
-		/// <summary>
-		/// Unregister player.
-		/// </summary>
-		public void OnDisable()
-		{
-			_callback = null;
-			s_UpdateActions.Remove(OnWillRenderCanvases);
-		}
+        /// <summary>
+        /// Unregister player.
+        /// </summary>
+        public void OnDisable()
+        {
+            _callback = null;
+            s_UpdateActions.Remove(OnWillRenderCanvases);
+        }
 
-		/// <summary>
-		/// Start playing.
-		/// </summary>
-		public void Play(bool reset, Action<float> callback = null)
-		{
-			if (reset)
-			{
-				_time = 0;
-			}
-			play = true;
-			if (callback != null)
-			{
-				_callback = callback;
-			}
-		}
+        /// <summary>
+        /// Start playing.
+        /// </summary>
+        public void Play(bool reset, Action<float> callback = null)
+        {
+            if (reset)
+            {
+                _time = 0;
+            }
+            play = true;
+            if (callback != null)
+            {
+                _callback = callback;
+            }
+        }
 
-		/// <summary>
-		/// Stop playing.
-		/// </summary>
-		public void Stop(bool reset)
-		{
-			if (reset)
-			{
-				_time = 0;
-				if (_callback != null)
-				{
-					_callback(_time);
-				}
-			}
-			play = false;
-		}
+        /// <summary>
+        /// Stop playing.
+        /// </summary>
+        public void Stop(bool reset)
+        {
+            if (reset)
+            {
+                _time = 0;
+                if (_callback != null)
+                {
+                    _callback(_time);
+                }
+            }
+            play = false;
+        }
 
-		//################################
-		// Private Members.
-		//################################
-		float _time = 0;
-		Action<float> _callback;
+        //################################
+        // Private Members.
+        //################################
+        float _time = 0;
+        Action<float> _callback;
 
-		void OnWillRenderCanvases()
-		{
-			if (!play || !Application.isPlaying || _callback == null)
-			{
-				return;
-			}
+        void OnWillRenderCanvases()
+        {
+            if (!play || !Application.isPlaying || _callback == null)
+            {
+                return;
+            }
 
-			_time += updateMode == AnimatorUpdateMode.UnscaledTime
-				? Time.unscaledDeltaTime
-				: Time.deltaTime;
-			var current = _time / duration;
+            _time += updateMode == AnimatorUpdateMode.UnscaledTime
+                ? Time.unscaledDeltaTime
+                : Time.deltaTime;
+            var current = _time / duration;
 
-			if (duration <= _time)
-			{
-				play = loop;
-				_time = loop ? -loopDelay : 0;
-			}
-			_callback(current);
-		}
-	}
+            if (duration <= _time)
+            {
+                play = loop;
+                _time = loop ? -loopDelay : 0;
+            }
+            _callback(current);
+        }
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/MaterialCache.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/MaterialCache.cs
index a130be10..ce86b1cc 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/MaterialCache.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/MaterialCache.cs
@@ -4,92 +4,92 @@ using UnityEngine;
 
 namespace Coffee.UIExtensions
 {
-	public class MaterialCache
-	{
-		public ulong hash { get; private set; }
+    public class MaterialCache
+    {
+        public ulong hash { get; private set; }
 
-		public int referenceCount { get; private set; }
+        public int referenceCount { get; private set; }
 
-		public Texture texture { get; private set; }
+        public Texture texture { get; private set; }
 
-		public Material material { get; private set; }
+        public Material material { get; private set; }
 
 #if UNITY_EDITOR
-		[UnityEditor.InitializeOnLoadMethod]
-		static void ClearCache()
-		{
-			foreach (var cache in materialCaches)
-			{
-				cache.material = null;
-			}
-			materialCaches.Clear();
-		}
+        [UnityEditor.InitializeOnLoadMethod]
+        static void ClearCache()
+        {
+            foreach (var cache in materialCaches)
+            {
+                cache.material = null;
+            }
+            materialCaches.Clear();
+        }
 #endif
 
-		public static List<MaterialCache> materialCaches = new List<MaterialCache>();
+        public static List<MaterialCache> materialCaches = new List<MaterialCache>();
 
-		public static MaterialCache Register(ulong hash, Texture texture, System.Func<Material> onCreateMaterial)
-		{
-			var cache = materialCaches.FirstOrDefault(x => x.hash == hash);
-			if (cache != null && cache.material)
-			{
-				if (cache.material)
-				{
-					cache.referenceCount++;
-				}
-				else
-				{
-					
-					materialCaches.Remove(cache);
-					cache = null;
-				}
-			}
-			if (cache == null)
-			{
-				cache = new MaterialCache()
-				{
-					hash = hash,
-					material = onCreateMaterial(),
-					referenceCount = 1,
-				};
-				materialCaches.Add(cache);
-			}
-			return cache;
-		}
+        public static MaterialCache Register(ulong hash, Texture texture, System.Func<Material> onCreateMaterial)
+        {
+            var cache = materialCaches.FirstOrDefault(x => x.hash == hash);
+            if (cache != null && cache.material)
+            {
+                if (cache.material)
+                {
+                    cache.referenceCount++;
+                }
+                else
+                {
 
-		public static MaterialCache Register(ulong hash, System.Func<Material> onCreateMaterial)
-		{
-			var cache = materialCaches.FirstOrDefault(x => x.hash == hash);
-			if (cache != null)
-			{
-				cache.referenceCount++;
-			}
-			if (cache == null)
-			{
-				cache = new MaterialCache()
-				{
-					hash = hash,
-					material = onCreateMaterial(),
-					referenceCount = 1,
-				};
-				materialCaches.Add(cache);
-			}
-			return cache;
-		}
+                    materialCaches.Remove(cache);
+                    cache = null;
+                }
+            }
+            if (cache == null)
+            {
+                cache = new MaterialCache()
+                {
+                    hash = hash,
+                    material = onCreateMaterial(),
+                    referenceCount = 1,
+                };
+                materialCaches.Add(cache);
+            }
+            return cache;
+        }
 
-		public static void Unregister(MaterialCache cache)
-		{
-			if (cache == null)
-			{
-				return;
-			}
+        public static MaterialCache Register(ulong hash, System.Func<Material> onCreateMaterial)
+        {
+            var cache = materialCaches.FirstOrDefault(x => x.hash == hash);
+            if (cache != null)
+            {
+                cache.referenceCount++;
+            }
+            if (cache == null)
+            {
+                cache = new MaterialCache()
+                {
+                    hash = hash,
+                    material = onCreateMaterial(),
+                    referenceCount = 1,
+                };
+                materialCaches.Add(cache);
+            }
+            return cache;
+        }
 
-			cache.referenceCount--;
-			if (cache.referenceCount <= 0)
-			{
-				MaterialCache.materialCaches.Remove(cache);
-				cache.material = null;
-			}
-		}
-	}
+        public static void Unregister(MaterialCache cache)
+        {
+            if (cache == null)
+            {
+                return;
+            }
+
+            cache.referenceCount--;
+            if (cache.referenceCount <= 0)
+            {
+                MaterialCache.materialCaches.Remove(cache);
+                cache.material = null;
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/MaterialResolver.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/MaterialResolver.cs
index 8f6cadb8..821b8a80 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/MaterialResolver.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/MaterialResolver.cs
@@ -1,6 +1,6 @@
 #if UNITY_EDITOR
-using System.IO;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Text;
 using UnityEditor;
@@ -8,119 +8,119 @@ using UnityEngine;
 
 namespace Coffee.UIExtensions
 {
-	public class MaterialResolver
-	{
-		static readonly StringBuilder s_StringBuilder = new StringBuilder();
+    public class MaterialResolver
+    {
+        static readonly StringBuilder s_StringBuilder = new StringBuilder();
 
-		static readonly Dictionary<string, Material> s_MaterialMap = new Dictionary<string, Material>();
+        static readonly Dictionary<string, Material> s_MaterialMap = new Dictionary<string, Material>();
 
-		public static Material GetOrGenerateMaterialVariant(Shader shader, params object[] append)
-		{
-			if (!shader)
-			{
-				return null;
-			}
+        public static Material GetOrGenerateMaterialVariant(Shader shader, params object[] append)
+        {
+            if (!shader)
+            {
+                return null;
+            }
 
-			Material mat = null;
-			string variantName = GetVariantName(shader, append);
-			if (s_MaterialMap.TryGetValue(variantName, out mat) && mat)
-			{
-				return mat;
-			}
+            Material mat = null;
+            string variantName = GetVariantName(shader, append);
+            if (s_MaterialMap.TryGetValue(variantName, out mat) && mat)
+            {
+                return mat;
+            }
 
-			string[] keywords = append.Where(x => 0 < (int)x)
-				.Select(x => x.ToString().ToUpper())
-				.ToArray();
-			mat = GetMaterial(shader, append);
-			if (mat)
-			{
-				if (!mat.shaderKeywords.OrderBy(x => x).SequenceEqual(keywords.OrderBy(x => x)))
-				{
-					mat.shaderKeywords = keywords;
-					EditorUtility.SetDirty(mat);
-					if (!Application.isPlaying)
-					{
-						EditorApplication.delayCall += AssetDatabase.SaveAssets;
-					}
-				}
-				return mat;
-			}
+            string[] keywords = append.Where(x => 0 < (int)x)
+                .Select(x => x.ToString().ToUpper())
+                .ToArray();
+            mat = GetMaterial(shader, append);
+            if (mat)
+            {
+                if (!mat.shaderKeywords.OrderBy(x => x).SequenceEqual(keywords.OrderBy(x => x)))
+                {
+                    mat.shaderKeywords = keywords;
+                    EditorUtility.SetDirty(mat);
+                    if (!Application.isPlaying)
+                    {
+                        EditorApplication.delayCall += AssetDatabase.SaveAssets;
+                    }
+                }
+                return mat;
+            }
 
-			if (s_MaterialMap.TryGetValue(variantName, out mat) && mat)
-			{
-				return mat;
-			}
+            if (s_MaterialMap.TryGetValue(variantName, out mat) && mat)
+            {
+                return mat;
+            }
 
-			Debug.Log("Generate material : " + variantName);
-			mat = new Material(shader);
-			mat.shaderKeywords = keywords;
+            Debug.Log("Generate material : " + variantName);
+            mat = new Material(shader);
+            mat.shaderKeywords = keywords;
 
-			mat.name = variantName;
-			mat.hideFlags |= HideFlags.NotEditable;
-			s_MaterialMap[variantName] = mat;
+            mat.name = variantName;
+            mat.hideFlags |= HideFlags.NotEditable;
+            s_MaterialMap[variantName] = mat;
 
-			bool isMainAsset = append.Cast<int>().All(x => x == 0);
-			EditorApplication.delayCall += () => SaveMaterial(mat, shader, isMainAsset);
-			return mat;
-		}
+            bool isMainAsset = append.Cast<int>().All(x => x == 0);
+            EditorApplication.delayCall += () => SaveMaterial(mat, shader, isMainAsset);
+            return mat;
+        }
 
-		static void SaveMaterial(Material mat, Shader shader, bool isMainAsset)
-		{
-			string materialPath = GetDefaultMaterialPath(shader);
+        static void SaveMaterial(Material mat, Shader shader, bool isMainAsset)
+        {
+            string materialPath = GetDefaultMaterialPath(shader);
 
 #if UIEFFECT_SEPARATE
 			string dir = Path.GetDirectoryName(materialPath);
 			materialPath = Path.Combine(Path.Combine(dir, "Separated"), mat.name + ".mat");
 			isMainAsset = true;
 #endif
-			if (isMainAsset)
-			{
-				Directory.CreateDirectory(Path.GetDirectoryName(materialPath));
-				AssetDatabase.CreateAsset(mat, materialPath);
-			}
-			else
-			{
-				GetOrGenerateMaterialVariant(shader);
-				mat.hideFlags |= HideFlags.HideInHierarchy;
-				AssetDatabase.AddObjectToAsset(mat, materialPath);
-			}
-			AssetDatabase.SaveAssets();
-		}
+            if (isMainAsset)
+            {
+                Directory.CreateDirectory(Path.GetDirectoryName(materialPath));
+                AssetDatabase.CreateAsset(mat, materialPath);
+            }
+            else
+            {
+                GetOrGenerateMaterialVariant(shader);
+                mat.hideFlags |= HideFlags.HideInHierarchy;
+                AssetDatabase.AddObjectToAsset(mat, materialPath);
+            }
+            AssetDatabase.SaveAssets();
+        }
 
-		public static Material GetMaterial(Shader shader, params object[] append)
-		{
-			string variantName = GetVariantName(shader, append);
-			return AssetDatabase.FindAssets("t:Material " + Path.GetFileName(shader.name))
-			.Select(x => AssetDatabase.GUIDToAssetPath(x))
-			.SelectMany(x => AssetDatabase.LoadAllAssetsAtPath(x))
-			.OfType<Material>()
-			.FirstOrDefault(x => x.name == variantName);
-		}
+        public static Material GetMaterial(Shader shader, params object[] append)
+        {
+            string variantName = GetVariantName(shader, append);
+            return AssetDatabase.FindAssets("t:Material " + Path.GetFileName(shader.name))
+            .Select(x => AssetDatabase.GUIDToAssetPath(x))
+            .SelectMany(x => AssetDatabase.LoadAllAssetsAtPath(x))
+            .OfType<Material>()
+            .FirstOrDefault(x => x.name == variantName);
+        }
 
-		public static string GetDefaultMaterialPath(Shader shader)
-		{
-			var name = Path.GetFileName(shader.name);
-			return AssetDatabase.FindAssets("t:Material " + name)
-			.Select(x => AssetDatabase.GUIDToAssetPath(x))
-			.FirstOrDefault(x => Path.GetFileNameWithoutExtension(x) == name)
-			?? ("Assets/" + name + ".mat");
-		}
+        public static string GetDefaultMaterialPath(Shader shader)
+        {
+            var name = Path.GetFileName(shader.name);
+            return AssetDatabase.FindAssets("t:Material " + name)
+            .Select(x => AssetDatabase.GUIDToAssetPath(x))
+            .FirstOrDefault(x => Path.GetFileNameWithoutExtension(x) == name)
+            ?? ("Assets/" + name + ".mat");
+        }
 
-		public static string GetVariantName(Shader shader, params object[] append)
-		{
-			s_StringBuilder.Length = 0;
+        public static string GetVariantName(Shader shader, params object[] append)
+        {
+            s_StringBuilder.Length = 0;
 
 #if UIEFFECT_SEPARATE
 			s_StringBuilder.Append("[Separated] ");
 #endif
-			s_StringBuilder.Append(Path.GetFileName(shader.name));
-			foreach (object mode in append.Where(x=>0<(int)x))
-			{
-				s_StringBuilder.Append("-");
-				s_StringBuilder.Append(mode.ToString());
-			}
-			return s_StringBuilder.ToString();
-		}
-	}
+            s_StringBuilder.Append(Path.GetFileName(shader.name));
+            foreach (object mode in append.Where(x => 0 < (int)x))
+            {
+                s_StringBuilder.Append("-");
+                s_StringBuilder.Append(mode.ToString());
+            }
+            return s_StringBuilder.ToString();
+        }
+    }
 }
 #endif
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/Matrix2x3.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/Matrix2x3.cs
index a7121cf5..2f621860 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/Matrix2x3.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/Matrix2x3.cs
@@ -2,32 +2,32 @@
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Matrix2x3.
-	/// </summary>
-	public struct Matrix2x3
-	{
-		public float m00, m01, m02, m10, m11, m12;
+    /// <summary>
+    /// Matrix2x3.
+    /// </summary>
+    public struct Matrix2x3
+    {
+        public float m00, m01, m02, m10, m11, m12;
 
-		public Matrix2x3(Rect rect, float cos, float sin)
-		{
-			const float center = 0.5f;
-			float dx = -rect.xMin / rect.width - center;
-			float dy = -rect.yMin / rect.height - center;
-			m00 = cos / rect.width;
-			m01 = -sin / rect.height;
-			m02 = dx * cos - dy * sin + center;
-			m10 = sin / rect.width;
-			m11 = cos / rect.height;		
-			m12 = dx * sin + dy * cos + center;
-		}
+        public Matrix2x3(Rect rect, float cos, float sin)
+        {
+            const float center = 0.5f;
+            float dx = -rect.xMin / rect.width - center;
+            float dy = -rect.yMin / rect.height - center;
+            m00 = cos / rect.width;
+            m01 = -sin / rect.height;
+            m02 = dx * cos - dy * sin + center;
+            m10 = sin / rect.width;
+            m11 = cos / rect.height;
+            m12 = dx * sin + dy * cos + center;
+        }
 
-		public static Vector2 operator*(Matrix2x3 m, Vector2 v)
-		{
-			return new Vector2(
-				(m.m00 * v.x) + (m.m01 * v.y) + m.m02,
-				(m.m10 * v.x) + (m.m11 * v.y) + m.m12
-			);
-		}
-	}
+        public static Vector2 operator *(Matrix2x3 m, Vector2 v)
+        {
+            return new Vector2(
+                (m.m00 * v.x) + (m.m01 * v.y) + m.m02,
+                (m.m10 * v.x) + (m.m11 * v.y) + m.m12
+            );
+        }
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/Packer.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/Packer.cs
index e39f0a0c..10563d8a 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/Packer.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/Packer.cs
@@ -1,60 +1,58 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
+using UnityEngine;
 
 public static class Packer
 {
-	/// <summary>
-	/// Pack 4 low-precision [0-1] floats values to a float.
-	/// Each value [0-1] has 64 steps(6 bits).
-	/// </summary>
-	public static float ToFloat(float x, float y, float z, float w)
-	{
-		x = x < 0 ? 0 : 1 < x ? 1 : x;
-		y = y < 0 ? 0 : 1 < y ? 1 : y;
-		z = z < 0 ? 0 : 1 < z ? 1 : z;
-		w = w < 0 ? 0 : 1 < w ? 1 : w;
-		const int PRECISION = (1 << 6) - 1;
-		return (Mathf.FloorToInt(w * PRECISION) << 18)
-		+ (Mathf.FloorToInt(z * PRECISION) << 12)
-		+ (Mathf.FloorToInt(y * PRECISION) << 6)
-		+ Mathf.FloorToInt(x * PRECISION);
-	}
+    /// <summary>
+    /// Pack 4 low-precision [0-1] floats values to a float.
+    /// Each value [0-1] has 64 steps(6 bits).
+    /// </summary>
+    public static float ToFloat(float x, float y, float z, float w)
+    {
+        x = x < 0 ? 0 : 1 < x ? 1 : x;
+        y = y < 0 ? 0 : 1 < y ? 1 : y;
+        z = z < 0 ? 0 : 1 < z ? 1 : z;
+        w = w < 0 ? 0 : 1 < w ? 1 : w;
+        const int PRECISION = (1 << 6) - 1;
+        return (Mathf.FloorToInt(w * PRECISION) << 18)
+        + (Mathf.FloorToInt(z * PRECISION) << 12)
+        + (Mathf.FloorToInt(y * PRECISION) << 6)
+        + Mathf.FloorToInt(x * PRECISION);
+    }
 
-	/// <summary>
-	/// Pack 4 low-precision [0-1] floats values to a float.
-	/// Each value [0-1] has 64 steps(6 bits).
-	/// </summary>
-	public static float ToFloat(Vector4 factor)
-	{
-		return ToFloat(Mathf.Clamp01(factor.x), Mathf.Clamp01(factor.y), Mathf.Clamp01(factor.z), Mathf.Clamp01(factor.w));
-	}
+    /// <summary>
+    /// Pack 4 low-precision [0-1] floats values to a float.
+    /// Each value [0-1] has 64 steps(6 bits).
+    /// </summary>
+    public static float ToFloat(Vector4 factor)
+    {
+        return ToFloat(Mathf.Clamp01(factor.x), Mathf.Clamp01(factor.y), Mathf.Clamp01(factor.z), Mathf.Clamp01(factor.w));
+    }
 
-	/// <summary>
-	/// Pack 1 middle-precision & 2 low-precision [0-1] floats values to a float.
-	/// z value [0-1] has 4096 steps(12 bits) and xy value [0-1] has 64 steps(6 bits).
-	/// </summary>
-	public static float ToFloat(float x, float y, float z)
-	{
-		x = x < 0 ? 0 : 1 < x ? 1 : x;
-		y = y < 0 ? 0 : 1 < y ? 1 : y;
-		z = z < 0 ? 0 : 1 < z ? 1 : z;
-		const int PRECISION = (1 << 8) - 1;
-		return (Mathf.FloorToInt(z * PRECISION) << 16)
-		+ (Mathf.FloorToInt(y * PRECISION) << 8)
-		+ Mathf.FloorToInt(x * PRECISION);
-	}
+    /// <summary>
+    /// Pack 1 middle-precision & 2 low-precision [0-1] floats values to a float.
+    /// z value [0-1] has 4096 steps(12 bits) and xy value [0-1] has 64 steps(6 bits).
+    /// </summary>
+    public static float ToFloat(float x, float y, float z)
+    {
+        x = x < 0 ? 0 : 1 < x ? 1 : x;
+        y = y < 0 ? 0 : 1 < y ? 1 : y;
+        z = z < 0 ? 0 : 1 < z ? 1 : z;
+        const int PRECISION = (1 << 8) - 1;
+        return (Mathf.FloorToInt(z * PRECISION) << 16)
+        + (Mathf.FloorToInt(y * PRECISION) << 8)
+        + Mathf.FloorToInt(x * PRECISION);
+    }
 
-	/// <summary>
-	/// Pack 2 low-precision [0-1] floats values to a float.
-	/// Each value [0-1] has 4096 steps(12 bits).
-	/// </summary>
-	public static float ToFloat(float x, float y)
-	{
-		x = x < 0 ? 0 : 1 < x ? 1 : x;
-		y = y < 0 ? 0 : 1 < y ? 1 : y;
-		const int PRECISION = (1 << 12) - 1;
-		return (Mathf.FloorToInt(y * PRECISION) << 12)
-		+ Mathf.FloorToInt(x * PRECISION);
-	}
+    /// <summary>
+    /// Pack 2 low-precision [0-1] floats values to a float.
+    /// Each value [0-1] has 4096 steps(12 bits).
+    /// </summary>
+    public static float ToFloat(float x, float y)
+    {
+        x = x < 0 ? 0 : 1 < x ? 1 : x;
+        y = y < 0 ? 0 : 1 < y ? 1 : y;
+        const int PRECISION = (1 << 12) - 1;
+        return (Mathf.FloorToInt(y * PRECISION) << 12)
+        + Mathf.FloorToInt(x * PRECISION);
+    }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ParameterTexture.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ParameterTexture.cs
index 9b221006..52af303a 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ParameterTexture.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ParameterTexture.cs
@@ -1,190 +1,188 @@
-using System.Collections;
+using System;
 using System.Collections.Generic;
 using UnityEngine;
-using UnityEngine.Rendering;
-using System;
 
 namespace Coffee.UIExtensions
 {
-	public interface IParameterTexture
-	{
-		int parameterIndex { get; set; }
+    public interface IParameterTexture
+    {
+        int parameterIndex { get; set; }
 
-		ParameterTexture ptex { get; }
-	}
+        ParameterTexture ptex { get; }
+    }
 
-	/// <summary>
-	/// Parameter texture.
-	/// </summary>
-	[System.Serializable]
-	public class ParameterTexture
-	{
+    /// <summary>
+    /// Parameter texture.
+    /// </summary>
+    [System.Serializable]
+    public class ParameterTexture
+    {
 
-		//################################
-		// Public Members.
-		//################################
+        //################################
+        // Public Members.
+        //################################
 
-		/// <summary>
-		/// Initializes a new instance of the <see cref="Coffee.UIExtensions.ParameterTexture"/> class.
-		/// </summary>
-		/// <param name="channels">Channels.</param>
-		/// <param name="instanceLimit">Instance limit.</param>
-		/// <param name="propertyName">Property name.</param>
-		public ParameterTexture(int channels, int instanceLimit, string propertyName)
-		{
-			_propertyName = propertyName;
-			_channels = ((channels - 1) / 4 + 1) * 4;
-			_instanceLimit = ((instanceLimit - 1) / 2 + 1) * 2;
-			_data = new byte[_channels * _instanceLimit];
+        /// <summary>
+        /// Initializes a new instance of the <see cref="Coffee.UIExtensions.ParameterTexture"/> class.
+        /// </summary>
+        /// <param name="channels">Channels.</param>
+        /// <param name="instanceLimit">Instance limit.</param>
+        /// <param name="propertyName">Property name.</param>
+        public ParameterTexture(int channels, int instanceLimit, string propertyName)
+        {
+            _propertyName = propertyName;
+            _channels = ((channels - 1) / 4 + 1) * 4;
+            _instanceLimit = ((instanceLimit - 1) / 2 + 1) * 2;
+            _data = new byte[_channels * _instanceLimit];
 
-			_stack = new Stack<int>(_instanceLimit);
-			for (int i = 1; i < _instanceLimit + 1; i++)
-			{
-				_stack.Push(i);
-			}
-		}
+            _stack = new Stack<int>(_instanceLimit);
+            for (int i = 1; i < _instanceLimit + 1; i++)
+            {
+                _stack.Push(i);
+            }
+        }
 
 
-		/// <summary>
-		/// Register the specified target.
-		/// </summary>
-		/// <param name="target">Target.</param>
-		public void Register(IParameterTexture target)
-		{
-			Initialize();
-			if (target.parameterIndex <= 0 && 0 < _stack.Count)
-			{
-				target.parameterIndex = _stack.Pop();
-//				Debug.LogFormat("<color=green>@@@ Register {0} : {1}</color>", target, target.parameterIndex);
-			}
-		}
+        /// <summary>
+        /// Register the specified target.
+        /// </summary>
+        /// <param name="target">Target.</param>
+        public void Register(IParameterTexture target)
+        {
+            Initialize();
+            if (target.parameterIndex <= 0 && 0 < _stack.Count)
+            {
+                target.parameterIndex = _stack.Pop();
+                //				Debug.LogFormat("<color=green>@@@ Register {0} : {1}</color>", target, target.parameterIndex);
+            }
+        }
 
-		/// <summary>
-		/// Unregister the specified target.
-		/// </summary>
-		/// <param name="target">Target.</param>
-		public void Unregister(IParameterTexture target)
-		{
-			if (0 < target.parameterIndex)
-			{
-//				Debug.LogFormat("<color=red>@@@ Unregister {0} : {1}</color>", target, target.parameterIndex);
-				_stack.Push(target.parameterIndex);
-				target.parameterIndex = 0;
-			}
-		}
+        /// <summary>
+        /// Unregister the specified target.
+        /// </summary>
+        /// <param name="target">Target.</param>
+        public void Unregister(IParameterTexture target)
+        {
+            if (0 < target.parameterIndex)
+            {
+                //				Debug.LogFormat("<color=red>@@@ Unregister {0} : {1}</color>", target, target.parameterIndex);
+                _stack.Push(target.parameterIndex);
+                target.parameterIndex = 0;
+            }
+        }
 
-		/// <summary>
-		/// Sets the data.
-		/// </summary>
-		/// <param name="target">Target.</param>
-		/// <param name="channelId">Channel identifier.</param>
-		/// <param name="value">Value.</param>
-		public void SetData(IParameterTexture target, int channelId, byte value)
-		{
-			int index = (target.parameterIndex - 1) * _channels + channelId;
-			if (0 < target.parameterIndex && _data[index] != value)
-			{
-				_data[index] = value;
-				_needUpload = true;
-			}
-		}
+        /// <summary>
+        /// Sets the data.
+        /// </summary>
+        /// <param name="target">Target.</param>
+        /// <param name="channelId">Channel identifier.</param>
+        /// <param name="value">Value.</param>
+        public void SetData(IParameterTexture target, int channelId, byte value)
+        {
+            int index = (target.parameterIndex - 1) * _channels + channelId;
+            if (0 < target.parameterIndex && _data[index] != value)
+            {
+                _data[index] = value;
+                _needUpload = true;
+            }
+        }
 
-		/// <summary>
-		/// Sets the data.
-		/// </summary>
-		/// <param name="target">Target.</param>
-		/// <param name="channelId">Channel identifier.</param>
-		/// <param name="value">Value.</param>
-		public void SetData(IParameterTexture target, int channelId, float value)
-		{
-			SetData(target, channelId, (byte)(Mathf.Clamp01(value) * 255));
-		}
+        /// <summary>
+        /// Sets the data.
+        /// </summary>
+        /// <param name="target">Target.</param>
+        /// <param name="channelId">Channel identifier.</param>
+        /// <param name="value">Value.</param>
+        public void SetData(IParameterTexture target, int channelId, float value)
+        {
+            SetData(target, channelId, (byte)(Mathf.Clamp01(value) * 255));
+        }
 
-		/// <summary>
-		/// Registers the material.
-		/// </summary>
-		/// <param name="mat">Mat.</param>
-		public void RegisterMaterial(Material mat)
-		{
-			if (_propertyId == 0)
-			{
-				_propertyId = Shader.PropertyToID(_propertyName);
-			}
-			if (mat)
-			{
-				mat.SetTexture(_propertyId, _texture);
-			}
-		}
+        /// <summary>
+        /// Registers the material.
+        /// </summary>
+        /// <param name="mat">Mat.</param>
+        public void RegisterMaterial(Material mat)
+        {
+            if (_propertyId == 0)
+            {
+                _propertyId = Shader.PropertyToID(_propertyName);
+            }
+            if (mat)
+            {
+                mat.SetTexture(_propertyId, _texture);
+            }
+        }
 
-		/// <summary>
-		/// Gets the index of the normalized.
-		/// </summary>
-		/// <returns>The normalized index.</returns>
-		/// <param name="target">Target.</param>
-		public float GetNormalizedIndex(IParameterTexture target)
-		{
-			return ((float)target.parameterIndex - 0.5f) / _instanceLimit;
-		}
+        /// <summary>
+        /// Gets the index of the normalized.
+        /// </summary>
+        /// <returns>The normalized index.</returns>
+        /// <param name="target">Target.</param>
+        public float GetNormalizedIndex(IParameterTexture target)
+        {
+            return ((float)target.parameterIndex - 0.5f) / _instanceLimit;
+        }
 
 
-		//################################
-		// Private Members.
-		//################################
+        //################################
+        // Private Members.
+        //################################
 
-		Texture2D _texture;
-		bool _needUpload;
-		int _propertyId;
-		readonly string _propertyName;
-		readonly int _channels;
-		readonly int _instanceLimit;
-		readonly byte[] _data;
-		readonly Stack<int> _stack;
-		static List<Action> updates;
+        Texture2D _texture;
+        bool _needUpload;
+        int _propertyId;
+        readonly string _propertyName;
+        readonly int _channels;
+        readonly int _instanceLimit;
+        readonly byte[] _data;
+        readonly Stack<int> _stack;
+        static List<Action> updates;
 
-		/// <summary>
-		/// Initialize this instance.
-		/// </summary>
-		void Initialize()
-		{
+        /// <summary>
+        /// Initialize this instance.
+        /// </summary>
+        void Initialize()
+        {
 #if UNITY_EDITOR
-			if (!UnityEditor.EditorApplication.isPlaying && UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode)
-			{
-				return;
-			}
+            if (!UnityEditor.EditorApplication.isPlaying && UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode)
+            {
+                return;
+            }
 #endif
-			if (updates == null)
-			{
-				updates = new List<Action>();
-				Canvas.willRenderCanvases += () =>
-				{
-					var count = updates.Count;
-					for (int i = 0; i < count; i++)
-					{
-						updates[i].Invoke();
-					}
-				};
-			}
+            if (updates == null)
+            {
+                updates = new List<Action>();
+                Canvas.willRenderCanvases += () =>
+                {
+                    var count = updates.Count;
+                    for (int i = 0; i < count; i++)
+                    {
+                        updates[i].Invoke();
+                    }
+                };
+            }
 
-			if (!_texture)
-			{
-				bool isLinear = QualitySettings.activeColorSpace == ColorSpace.Linear;
-				_texture = new Texture2D(_channels / 4, _instanceLimit, TextureFormat.RGBA32, false, isLinear);
-				_texture.filterMode = FilterMode.Point;
-				_texture.wrapMode = TextureWrapMode.Clamp;
+            if (!_texture)
+            {
+                bool isLinear = QualitySettings.activeColorSpace == ColorSpace.Linear;
+                _texture = new Texture2D(_channels / 4, _instanceLimit, TextureFormat.RGBA32, false, isLinear);
+                _texture.filterMode = FilterMode.Point;
+                _texture.wrapMode = TextureWrapMode.Clamp;
 
-				updates.Add(UpdateParameterTexture);
-				_needUpload = true;
-			}
-		}
+                updates.Add(UpdateParameterTexture);
+                _needUpload = true;
+            }
+        }
 
-		void UpdateParameterTexture()
-		{
-			if (_needUpload && _texture)
-			{
-				_needUpload = false;
-				_texture.LoadRawTextureData(_data);
-				_texture.Apply(false, false);
-			}
-		}
-	}
+        void UpdateParameterTexture()
+        {
+            if (_needUpload && _texture)
+            {
+                _needUpload = false;
+                _texture.LoadRawTextureData(_data);
+                _texture.Apply(false, false);
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ShadowStyle.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ShadowStyle.cs
index 4544ced4..084460bf 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ShadowStyle.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ShadowStyle.cs
@@ -1,14 +1,14 @@
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Shadow effect style.
-	/// </summary>
-	public enum ShadowStyle
-	{
-		None = 0,
-		Shadow,
-		Outline,
-		Outline8,
-		Shadow3,
-	}
+    /// <summary>
+    /// Shadow effect style.
+    /// </summary>
+    public enum ShadowStyle
+    {
+        None = 0,
+        Shadow,
+        Outline,
+        Outline8,
+        Shadow3,
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ToneMode.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ToneMode.cs
index ea04f2eb..824b2710 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ToneMode.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/ToneMode.cs
@@ -1,14 +1,14 @@
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Effect mode.
-	/// </summary>
-	public enum EffectMode
-	{
-		None = 0,
-		Grayscale = 1,
-		Sepia = 2,
-		Nega = 3,
-		Pixel = 4,
-	}
+    /// <summary>
+    /// Effect mode.
+    /// </summary>
+    public enum EffectMode
+    {
+        None = 0,
+        Grayscale = 1,
+        Sepia = 2,
+        Nega = 3,
+        Pixel = 4,
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/UIEffectBase.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/UIEffectBase.cs
index 1046d5e9..9a03d32c 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/UIEffectBase.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Common/UIEffectBase.cs
@@ -4,162 +4,162 @@ using UnityEngine.UI;
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Abstract effect base for UI.
-	/// </summary>
-	[DisallowMultipleComponent]
-	public abstract class UIEffectBase : BaseMeshEffect, IParameterTexture
+    /// <summary>
+    /// Abstract effect base for UI.
+    /// </summary>
+    [DisallowMultipleComponent]
+    public abstract class UIEffectBase : BaseMeshEffect, IParameterTexture
 #if UNITY_EDITOR
-	, ISerializationCallbackReceiver
+    , ISerializationCallbackReceiver
 #endif
-	{
-		protected static readonly Vector2[] splitedCharacterPosition = { Vector2.up, Vector2.one, Vector2.right, Vector2.zero };
-		protected static readonly List<UIVertex> tempVerts = new List<UIVertex>();
+    {
+        protected static readonly Vector2[] splitedCharacterPosition = { Vector2.up, Vector2.one, Vector2.right, Vector2.zero };
+        protected static readonly List<UIVertex> tempVerts = new List<UIVertex>();
 
-		[HideInInspector]
-		[SerializeField] int m_Version;
-		[SerializeField] protected Material m_EffectMaterial;
+        [HideInInspector]
+        [SerializeField] int m_Version;
+        [SerializeField] protected Material m_EffectMaterial;
 
-		/// <summary>
-		/// Gets or sets the parameter index.
-		/// </summary>
-		public int parameterIndex { get; set; }
+        /// <summary>
+        /// Gets or sets the parameter index.
+        /// </summary>
+        public int parameterIndex { get; set; }
 
-		/// <summary>
-		/// Gets the parameter texture.
-		/// </summary>
-		public virtual ParameterTexture ptex { get { return null; } }
+        /// <summary>
+        /// Gets the parameter texture.
+        /// </summary>
+        public virtual ParameterTexture ptex { get { return null; } }
 
-		/// <summary>
-		/// Gets target graphic for effect.
-		/// </summary>
-		public Graphic targetGraphic { get { return graphic; } }
+        /// <summary>
+        /// Gets target graphic for effect.
+        /// </summary>
+        public Graphic targetGraphic { get { return graphic; } }
 
-		/// <summary>
-		/// Gets material for effect.
-		/// </summary>
-		public Material effectMaterial { get { return m_EffectMaterial; } }
+        /// <summary>
+        /// Gets material for effect.
+        /// </summary>
+        public Material effectMaterial { get { return m_EffectMaterial; } }
 
 #if UNITY_EDITOR
-		protected override void Reset()
-		{
-			m_Version = 300;
-			OnValidate();
-		}
+        protected override void Reset()
+        {
+            m_Version = 300;
+            OnValidate();
+        }
 
-		/// <summary>
-		/// Raises the validate event.
-		/// </summary>
-		protected override void OnValidate()
-		{
-			base.OnValidate ();
+        /// <summary>
+        /// Raises the validate event.
+        /// </summary>
+        protected override void OnValidate()
+        {
+            base.OnValidate();
 
-			var mat = GetMaterial();
-			if (m_EffectMaterial != mat)
-			{
-				m_EffectMaterial = mat;
-				UnityEditor.EditorUtility.SetDirty(this);
-			}
+            var mat = GetMaterial();
+            if (m_EffectMaterial != mat)
+            {
+                m_EffectMaterial = mat;
+                UnityEditor.EditorUtility.SetDirty(this);
+            }
 
-			ModifyMaterial();
-			SetVerticesDirty ();
-			SetDirty ();
-		}
+            ModifyMaterial();
+            SetVerticesDirty();
+            SetDirty();
+        }
 
-		public void OnBeforeSerialize()
-		{
-		}
+        public void OnBeforeSerialize()
+        {
+        }
 
-		public void OnAfterDeserialize()
-		{
-			UnityEditor.EditorApplication.delayCall += UpgradeIfNeeded;
-		}
+        public void OnAfterDeserialize()
+        {
+            UnityEditor.EditorApplication.delayCall += UpgradeIfNeeded;
+        }
 
-		protected bool IsShouldUpgrade(int expectedVersion)
-		{
-			if (m_Version < expectedVersion)
-			{
-				Debug.LogFormat(gameObject, "<b>{0}({1})</b> has been upgraded: <i>version {2} -> {3}</i>", name, GetType().Name, m_Version, expectedVersion);
-				m_Version = expectedVersion;
+        protected bool IsShouldUpgrade(int expectedVersion)
+        {
+            if (m_Version < expectedVersion)
+            {
+                Debug.LogFormat(gameObject, "<b>{0}({1})</b> has been upgraded: <i>version {2} -> {3}</i>", name, GetType().Name, m_Version, expectedVersion);
+                m_Version = expectedVersion;
 
-				//UnityEditor.EditorApplication.delayCall += () =>
-				{
-					UnityEditor.EditorUtility.SetDirty(this);
-					if (!Application.isPlaying && gameObject && gameObject.scene.IsValid())
-					{
-						UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(gameObject.scene);
-					}
-				}
-				;
-				return true;
-			}
-			return false;
-		}
+                //UnityEditor.EditorApplication.delayCall += () =>
+                {
+                    UnityEditor.EditorUtility.SetDirty(this);
+                    if (!Application.isPlaying && gameObject && gameObject.scene.IsValid())
+                    {
+                        UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(gameObject.scene);
+                    }
+                }
+                ;
+                return true;
+            }
+            return false;
+        }
 
-		protected virtual void UpgradeIfNeeded()
-		{
-		}
+        protected virtual void UpgradeIfNeeded()
+        {
+        }
 
-		/// <summary>
-		/// Gets the material.
-		/// </summary>
-		/// <returns>The material.</returns>
-		protected virtual Material GetMaterial()
-		{
-			return null;
-		}
+        /// <summary>
+        /// Gets the material.
+        /// </summary>
+        /// <returns>The material.</returns>
+        protected virtual Material GetMaterial()
+        {
+            return null;
+        }
 #endif
 
-		/// <summary>
-		/// Modifies the material.
-		/// </summary>
-		public virtual void ModifyMaterial()
-		{
-			targetGraphic.material = isActiveAndEnabled ? m_EffectMaterial : null;
-		}
+        /// <summary>
+        /// Modifies the material.
+        /// </summary>
+        public virtual void ModifyMaterial()
+        {
+            targetGraphic.material = isActiveAndEnabled ? m_EffectMaterial : null;
+        }
 
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable ();
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
 
-			if (ptex != null)
-			{
-				ptex.Register(this);
-			}
-			ModifyMaterial();
-			SetVerticesDirty();
-			SetDirty();
-		}
+            if (ptex != null)
+            {
+                ptex.Register(this);
+            }
+            ModifyMaterial();
+            SetVerticesDirty();
+            SetDirty();
+        }
 
-		/// <summary>
-		/// This function is called when the behaviour becomes disabled () or inactive.
-		/// </summary>
-		protected override void OnDisable()
-		{
-			base.OnDisable ();
+        /// <summary>
+        /// This function is called when the behaviour becomes disabled () or inactive.
+        /// </summary>
+        protected override void OnDisable()
+        {
+            base.OnDisable();
 
-			ModifyMaterial ();
-			SetVerticesDirty();
-			if (ptex != null)
-			{
-				ptex.Unregister(this);
-			}
-		}
+            ModifyMaterial();
+            SetVerticesDirty();
+            if (ptex != null)
+            {
+                ptex.Unregister(this);
+            }
+        }
 
-		/// <summary>
-		/// Mark the UIEffect as dirty.
-		/// </summary>
-		protected virtual void SetDirty()
-		{
-			SetVerticesDirty();
-		}
+        /// <summary>
+        /// Mark the UIEffect as dirty.
+        /// </summary>
+        protected virtual void SetDirty()
+        {
+            SetVerticesDirty();
+        }
 
-		protected override void OnDidApplyAnimationProperties()
-		{
-			SetDirty();
-		}
-	}
+        protected override void OnDidApplyAnimationProperties()
+        {
+            SetDirty();
+        }
+    }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/BaseMeshEffectEditor.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/BaseMeshEffectEditor.cs
index 274003c1..5180ca39 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/BaseMeshEffectEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/BaseMeshEffectEditor.cs
@@ -1,86 +1,85 @@
-using System.Collections;
-using System.Collections.Generic;
+using System.Collections.Generic;
 using UnityEditor;
 using UnityEngine;
 
 namespace Coffee.UIExtensions.Editors
 {
-	public class BaseMeshEffectEditor : Editor
-	{
-		List<MaterialEditor> _materialEditors = new List<MaterialEditor> ();
+    public class BaseMeshEffectEditor : Editor
+    {
+        List<MaterialEditor> _materialEditors = new List<MaterialEditor>();
 
-		protected virtual void OnEnable ()
-		{
-			ClearMaterialEditors ();
-		}
+        protected virtual void OnEnable()
+        {
+            ClearMaterialEditors();
+        }
 
-		protected virtual void OnDisable ()
-		{
-			ClearMaterialEditors ();
-		}
+        protected virtual void OnDisable()
+        {
+            ClearMaterialEditors();
+        }
 
-		void ClearMaterialEditors ()
-		{
-			foreach (var e in _materialEditors)
-			{
-				if (e)
-				{
-					DestroyImmediate (e);
-				}
-			}
-			_materialEditors.Clear ();
-		}
+        void ClearMaterialEditors()
+        {
+            foreach (var e in _materialEditors)
+            {
+                if (e)
+                {
+                    DestroyImmediate(e);
+                }
+            }
+            _materialEditors.Clear();
+        }
 
-		protected void ShowMaterialEditors (Material [] materials, int startIndex, int count)
-		{
-			for (int i = 0; i < count; i++)
-			{
-				if (_materialEditors.Count == i)
-				{
-					_materialEditors.Add (null);
-				}
+        protected void ShowMaterialEditors(Material[] materials, int startIndex, int count)
+        {
+            for (int i = 0; i < count; i++)
+            {
+                if (_materialEditors.Count == i)
+                {
+                    _materialEditors.Add(null);
+                }
 
-				var mat = materials [startIndex + i];
-				var editor = _materialEditors [i];
-				if (editor && editor.target != mat)
-				{
-					DestroyImmediate (editor);
-					editor = null;
-				}
+                var mat = materials[startIndex + i];
+                var editor = _materialEditors[i];
+                if (editor && editor.target != mat)
+                {
+                    DestroyImmediate(editor);
+                    editor = null;
+                }
 
-				if (!editor)
-				{
-					editor = _materialEditors [i] = Editor.CreateEditor (mat) as MaterialEditor;
-				}
+                if (!editor)
+                {
+                    editor = _materialEditors[i] = Editor.CreateEditor(mat) as MaterialEditor;
+                }
 
-				editor.DrawHeader ();
-				editor.OnInspectorGUI ();
-			}
-		}
+                editor.DrawHeader();
+                editor.OnInspectorGUI();
+            }
+        }
 
 
-		protected void ShowCanvasChannelsWarning ()
-		{
-			BaseMeshEffect effect = target as BaseMeshEffect;
-			if (!effect || !effect.graphic)
-			{
-				return;
-			}
+        protected void ShowCanvasChannelsWarning()
+        {
+            BaseMeshEffect effect = target as BaseMeshEffect;
+            if (!effect || !effect.graphic)
+            {
+                return;
+            }
 
 #if UNITY_5_6_OR_NEWER
-			AdditionalCanvasShaderChannels channels = effect.requiredChannels;
-			var canvas = effect.graphic.canvas;
-			if (canvas && (canvas.additionalShaderChannels & channels) != channels)
-			{
-				EditorGUILayout.BeginHorizontal ();
-				EditorGUILayout.HelpBox (string.Format ("Enable {1} of Canvas.additionalShaderChannels to use {0}.", effect.GetType ().Name, channels), MessageType.Warning);
-				if (GUILayout.Button ("Fix"))
-				{
-					canvas.additionalShaderChannels |= channels;
-				}
-				EditorGUILayout.EndHorizontal ();
-			}
+            AdditionalCanvasShaderChannels channels = effect.requiredChannels;
+            var canvas = effect.graphic.canvas;
+            if (canvas && (canvas.additionalShaderChannels & channels) != channels)
+            {
+                EditorGUILayout.BeginHorizontal();
+                EditorGUILayout.HelpBox(string.Format("Enable {1} of Canvas.additionalShaderChannels to use {0}.", effect.GetType().Name, channels), MessageType.Warning);
+                if (GUILayout.Button("Fix"))
+                {
+                    canvas.additionalShaderChannels |= channels;
+                }
+                EditorGUILayout.EndHorizontal();
+            }
 #endif
-		}
-	}
+        }
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/DeprecatedRemover.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/DeprecatedRemover.cs
index d64e2d89..5f425996 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/DeprecatedRemover.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/DeprecatedRemover.cs
@@ -1,53 +1,51 @@
-using System.Collections;
+using System.Collections.Generic;
 using System.IO;
-using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using UnityEditor;
-using UnityEngine;
 
 namespace Coffee.UIExtensions.Editors
 {
-	/// <summary>
-	/// Remove deprecated files in old .unitypackage, after compiling.
-	/// </summary>
-	public class DeprecatedRemover
-	{
-		/// <summary>
-		/// GUIDs of deprecated files.
-		/// </summary>
-		static readonly List<string> DeprecatedFiles = new List<string>()
-		{
-			"156b57fee6ef941958e66a129ce387e2",	// UICustomEffect.cs
+    /// <summary>
+    /// Remove deprecated files in old .unitypackage, after compiling.
+    /// </summary>
+    public class DeprecatedRemover
+    {
+        /// <summary>
+        /// GUIDs of deprecated files.
+        /// </summary>
+        static readonly List<string> DeprecatedFiles = new List<string>()
+        {
+            "156b57fee6ef941958e66a129ce387e2",	// UICustomEffect.cs
 			"a4961e148a8cd4fe0b84dddc2741894a",	// UICustomEffectEditor.cs
 			"7b1ed09bdf5e54042b5cd1fbe69361bf",	// MaterialBundle.cs
 		};
 
 
-		#if UNITY_EDITOR
-		[UnityEditor.InitializeOnLoadMethod]
-		static void RemoveFiles()
-		{
-			// The deprecated file path that exists.
-			var files = DeprecatedFiles.Select(x => AssetDatabase.GUIDToAssetPath(x))
-				.Where(x => File.Exists(x))
-				.ToArray();
-			
-			if (files.Any())
-			{
-				StringBuilder sb = new StringBuilder();
-				sb.AppendFormat("<b><color=orange>[{0}]</color></b> {1} files have been removed.\n", typeof(DeprecatedRemover).Name, files.Length);
+#if UNITY_EDITOR
+        [UnityEditor.InitializeOnLoadMethod]
+        static void RemoveFiles()
+        {
+            // The deprecated file path that exists.
+            var files = DeprecatedFiles.Select(x => AssetDatabase.GUIDToAssetPath(x))
+                .Where(x => File.Exists(x))
+                .ToArray();
 
-				foreach (var path in files)
-				{
-					AssetDatabase.DeleteAsset(path);
-					sb.AppendFormat("  - {0}\n", path);
-				}
+            if (files.Any())
+            {
+                StringBuilder sb = new StringBuilder();
+                sb.AppendFormat("<b><color=orange>[{0}]</color></b> {1} files have been removed.\n", typeof(DeprecatedRemover).Name, files.Length);
 
-				AssetDatabase.Refresh();
-				UnityEngine.Debug.Log(sb);
-			}
-		}
-		#endif
-	}
+                foreach (var path in files)
+                {
+                    AssetDatabase.DeleteAsset(path);
+                    sb.AppendFormat("  - {0}\n", path);
+                }
+
+                AssetDatabase.Refresh();
+                UnityEngine.Debug.Log(sb);
+            }
+        }
+#endif
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIDissolveEditor.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIDissolveEditor.cs
index 2883ff79..57eea622 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIDissolveEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIDissolveEditor.cs
@@ -1,181 +1,179 @@
-using UnityEditor;
-using UnityEditorInternal;
+using System.Linq;
+using UnityEditor;
 using UnityEngine;
-using System.Linq;
-using System.Collections.Generic;
-using UnityEngine.UI;
 
 namespace Coffee.UIExtensions.Editors
 {
-	/// <summary>
-	/// UIEffect editor.
-	/// </summary>
-	[CustomEditor(typeof(UIDissolve))]
-	[CanEditMultipleObjects]
-	public class UIDissolveEditor : BaseMeshEffectEditor
-	{
-		static int s_NoiseTexId;
+    /// <summary>
+    /// UIEffect editor.
+    /// </summary>
+    [CustomEditor(typeof(UIDissolve))]
+    [CanEditMultipleObjects]
+    public class UIDissolveEditor : BaseMeshEffectEditor
+    {
+        static int s_NoiseTexId;
 
-		//################################
-		// Public/Protected Members.
-		//################################
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable ();
+        //################################
+        // Public/Protected Members.
+        //################################
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
 
-			_spMaterial = serializedObject.FindProperty("m_EffectMaterial");
-			_spEffectFactor = serializedObject.FindProperty("m_EffectFactor");
-			_spEffectArea = serializedObject.FindProperty("m_EffectArea");
-			_spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio");
-			_spWidth = serializedObject.FindProperty("m_Width");
-			_spColor = serializedObject.FindProperty("m_Color");
-			_spSoftness = serializedObject.FindProperty("m_Softness");
-			_spColorMode = serializedObject.FindProperty("m_ColorMode");
-			_spNoiseTexture = serializedObject.FindProperty("m_NoiseTexture");
-			_spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio");
-			_spReverse = serializedObject.FindProperty("m_Reverse");
-			var player = serializedObject.FindProperty("m_Player");
-			_spPlay = player.FindPropertyRelative("play");
-			_spDuration = player.FindPropertyRelative("duration");
-			_spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay");
-			_spLoop = player.FindPropertyRelative("loop");
-			_spLoopDelay = player.FindPropertyRelative("loopDelay");
-			_spUpdateMode = player.FindPropertyRelative("updateMode");
+            _spMaterial = serializedObject.FindProperty("m_EffectMaterial");
+            _spEffectFactor = serializedObject.FindProperty("m_EffectFactor");
+            _spEffectArea = serializedObject.FindProperty("m_EffectArea");
+            _spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio");
+            _spWidth = serializedObject.FindProperty("m_Width");
+            _spColor = serializedObject.FindProperty("m_Color");
+            _spSoftness = serializedObject.FindProperty("m_Softness");
+            _spColorMode = serializedObject.FindProperty("m_ColorMode");
+            _spNoiseTexture = serializedObject.FindProperty("m_NoiseTexture");
+            _spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio");
+            _spReverse = serializedObject.FindProperty("m_Reverse");
+            var player = serializedObject.FindProperty("m_Player");
+            _spPlay = player.FindPropertyRelative("play");
+            _spDuration = player.FindPropertyRelative("duration");
+            _spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay");
+            _spLoop = player.FindPropertyRelative("loop");
+            _spLoopDelay = player.FindPropertyRelative("loopDelay");
+            _spUpdateMode = player.FindPropertyRelative("updateMode");
 
-			s_NoiseTexId = Shader.PropertyToID ("_NoiseTex");
+            s_NoiseTexId = Shader.PropertyToID("_NoiseTex");
 
-			_shader = Shader.Find ("TextMeshPro/Distance Field (UIDissolve)");
-			_mobileShader = Shader.Find ("TextMeshPro/Mobile/Distance Field (UIDissolve)");
-			_spriteShader = Shader.Find ("TextMeshPro/Sprite (UIDissolve)");
-		}
+            _shader = Shader.Find("TextMeshPro/Distance Field (UIDissolve)");
+            _mobileShader = Shader.Find("TextMeshPro/Mobile/Distance Field (UIDissolve)");
+            _spriteShader = Shader.Find("TextMeshPro/Sprite (UIDissolve)");
+        }
 
-		/// <summary>
-		/// Implement this function to make a custom inspector.
-		/// </summary>
-		public override void OnInspectorGUI()
-		{
-			foreach (var d in targets.Cast<UIDissolve> ())
-			{
-				var mat = d.material;
-				if (d.isTMPro && mat && mat.HasProperty(s_NoiseTexId))
-				{
-					ColorMode colorMode =
-								mat.IsKeywordEnabled ("ADD") ? ColorMode.Add
-										: mat.IsKeywordEnabled ("SUBTRACT") ? ColorMode.Subtract
-										: mat.IsKeywordEnabled ("FILL") ? ColorMode.Fill
-										: ColorMode.Multiply;
+        /// <summary>
+        /// Implement this function to make a custom inspector.
+        /// </summary>
+        public override void OnInspectorGUI()
+        {
+            foreach (var d in targets.Cast<UIDissolve>())
+            {
+                var mat = d.material;
+                if (d.isTMPro && mat && mat.HasProperty(s_NoiseTexId))
+                {
+                    ColorMode colorMode =
+                                mat.IsKeywordEnabled("ADD") ? ColorMode.Add
+                                        : mat.IsKeywordEnabled("SUBTRACT") ? ColorMode.Subtract
+                                        : mat.IsKeywordEnabled("FILL") ? ColorMode.Fill
+                                        : ColorMode.Multiply;
 
-					Texture noiseTexture = mat.GetTexture(s_NoiseTexId);
+                    Texture noiseTexture = mat.GetTexture(s_NoiseTexId);
 
-					if (d.colorMode != colorMode || d.noiseTexture != noiseTexture)
-					{
-						var so = new SerializedObject (d);
-						so.FindProperty ("m_ColorMode").intValue = (int)colorMode;
-						so.FindProperty ("m_NoiseTexture").objectReferenceValue = noiseTexture;
-						so.ApplyModifiedProperties ();
-					}
-				}
-			}
+                    if (d.colorMode != colorMode || d.noiseTexture != noiseTexture)
+                    {
+                        var so = new SerializedObject(d);
+                        so.FindProperty("m_ColorMode").intValue = (int)colorMode;
+                        so.FindProperty("m_NoiseTexture").objectReferenceValue = noiseTexture;
+                        so.ApplyModifiedProperties();
+                    }
+                }
+            }
 
-			serializedObject.Update();
+            serializedObject.Update();
 
-			//================
-			// Effect material.
-			//================
-			EditorGUI.BeginDisabledGroup(true);
-			EditorGUILayout.PropertyField(_spMaterial);
-			EditorGUI.EndDisabledGroup();
+            //================
+            // Effect material.
+            //================
+            EditorGUI.BeginDisabledGroup(true);
+            EditorGUILayout.PropertyField(_spMaterial);
+            EditorGUI.EndDisabledGroup();
 
-			//================
-			// Effect setting.
-			//================
-			EditorGUILayout.PropertyField(_spEffectFactor);
-			EditorGUILayout.PropertyField(_spWidth);
-			EditorGUILayout.PropertyField(_spSoftness);
-			EditorGUILayout.PropertyField(_spColor);
+            //================
+            // Effect setting.
+            //================
+            EditorGUILayout.PropertyField(_spEffectFactor);
+            EditorGUILayout.PropertyField(_spWidth);
+            EditorGUILayout.PropertyField(_spSoftness);
+            EditorGUILayout.PropertyField(_spColor);
 
-			bool isAnyTMPro = targets.Cast<UIDissolve>().Any(x => x.isTMPro);
-			using (new EditorGUI.DisabledGroupScope (isAnyTMPro))
-			{
-				EditorGUILayout.PropertyField (_spColorMode);
-				EditorGUILayout.PropertyField (_spNoiseTexture);
-			}
+            bool isAnyTMPro = targets.Cast<UIDissolve>().Any(x => x.isTMPro);
+            using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
+            {
+                EditorGUILayout.PropertyField(_spColorMode);
+                EditorGUILayout.PropertyField(_spNoiseTexture);
+            }
 
-			//================
-			// Advanced option.
-			//================
-			EditorGUILayout.PropertyField(_spEffectArea);
-			EditorGUILayout.PropertyField(_spKeepAspectRatio);
+            //================
+            // Advanced option.
+            //================
+            EditorGUILayout.PropertyField(_spEffectArea);
+            EditorGUILayout.PropertyField(_spKeepAspectRatio);
 
-			//================
-			// Effect player.
-			//================
-			EditorGUILayout.PropertyField(_spPlay);
-			EditorGUILayout.PropertyField(_spDuration);
-			EditorGUILayout.PropertyField(_spInitialPlayDelay);
-			EditorGUILayout.PropertyField(_spLoop);
-			EditorGUILayout.PropertyField(_spLoopDelay);
-			EditorGUILayout.PropertyField(_spUpdateMode);
-			EditorGUILayout.PropertyField(_spReverse);
+            //================
+            // Effect player.
+            //================
+            EditorGUILayout.PropertyField(_spPlay);
+            EditorGUILayout.PropertyField(_spDuration);
+            EditorGUILayout.PropertyField(_spInitialPlayDelay);
+            EditorGUILayout.PropertyField(_spLoop);
+            EditorGUILayout.PropertyField(_spLoopDelay);
+            EditorGUILayout.PropertyField(_spUpdateMode);
+            EditorGUILayout.PropertyField(_spReverse);
 
-			// Debug.
-			using (new EditorGUI.DisabledGroupScope(!Application.isPlaying))
-			using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
-			{
-				GUILayout.Label("Debug");
+            // Debug.
+            using (new EditorGUI.DisabledGroupScope(!Application.isPlaying))
+            using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
+            {
+                GUILayout.Label("Debug");
 
-				if (GUILayout.Button("Play", "ButtonLeft"))
-				{
-					(target as UIDissolve).Play();
-				}
+                if (GUILayout.Button("Play", "ButtonLeft"))
+                {
+                    (target as UIDissolve).Play();
+                }
 
-				if (GUILayout.Button("Stop", "ButtonRight"))
-				{
-					(target as UIDissolve).Stop();
-				}
-			}
+                if (GUILayout.Button("Stop", "ButtonRight"))
+                {
+                    (target as UIDissolve).Stop();
+                }
+            }
 
-			var c = target as UIDissolve;
-			c.ShowTMProWarning (_shader, _mobileShader, _spriteShader, mat => {
-				if(mat.shader == _spriteShader)
-				{
-					mat.shaderKeywords = c.material.shaderKeywords;
-					mat.SetTexture ("_NoiseTex", c.material.GetTexture ("_NoiseTex"));
-				}
-			});
-			ShowCanvasChannelsWarning ();
+            var c = target as UIDissolve;
+            c.ShowTMProWarning(_shader, _mobileShader, _spriteShader, mat =>
+            {
+                if (mat.shader == _spriteShader)
+                {
+                    mat.shaderKeywords = c.material.shaderKeywords;
+                    mat.SetTexture("_NoiseTex", c.material.GetTexture("_NoiseTex"));
+                }
+            });
+            ShowCanvasChannelsWarning();
 
-			ShowMaterialEditors (c.materials, 1, c.materials.Length - 1);
+            ShowMaterialEditors(c.materials, 1, c.materials.Length - 1);
 
-			serializedObject.ApplyModifiedProperties();
+            serializedObject.ApplyModifiedProperties();
 
-		}
+        }
 
-		//################################
-		// Private Members.
-		//################################
-		SerializedProperty _spMaterial;
-		SerializedProperty _spEffectFactor;
-		SerializedProperty _spWidth;
-		SerializedProperty _spColor;
-		SerializedProperty _spSoftness;
-		SerializedProperty _spColorMode;
-		SerializedProperty _spNoiseTexture;
-		SerializedProperty _spEffectArea;
-		SerializedProperty _spKeepAspectRatio;
-		SerializedProperty _spReverse;
-		SerializedProperty _spPlay;
-		SerializedProperty _spLoop;
-		SerializedProperty _spLoopDelay;
-		SerializedProperty _spDuration;
-		SerializedProperty _spInitialPlayDelay;
-		SerializedProperty _spUpdateMode;
+        //################################
+        // Private Members.
+        //################################
+        SerializedProperty _spMaterial;
+        SerializedProperty _spEffectFactor;
+        SerializedProperty _spWidth;
+        SerializedProperty _spColor;
+        SerializedProperty _spSoftness;
+        SerializedProperty _spColorMode;
+        SerializedProperty _spNoiseTexture;
+        SerializedProperty _spEffectArea;
+        SerializedProperty _spKeepAspectRatio;
+        SerializedProperty _spReverse;
+        SerializedProperty _spPlay;
+        SerializedProperty _spLoop;
+        SerializedProperty _spLoopDelay;
+        SerializedProperty _spDuration;
+        SerializedProperty _spInitialPlayDelay;
+        SerializedProperty _spUpdateMode;
 
-		Shader _shader;
-		Shader _mobileShader;
-		Shader _spriteShader;
-	}
+        Shader _shader;
+        Shader _mobileShader;
+        Shader _spriteShader;
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIEffectCapturedImageEditor.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIEffectCapturedImageEditor.cs
index ef12c019..e277a46b 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIEffectCapturedImageEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIEffectCapturedImageEditor.cs
@@ -5,184 +5,184 @@ using DesamplingRate = Coffee.UIExtensions.UIEffectCapturedImage.DesamplingRate;
 
 namespace Coffee.UIExtensions.Editors
 {
-	/// <summary>
-	/// UIEffectCapturedImage editor.
-	/// </summary>
-	[CustomEditor(typeof(UIEffectCapturedImage))]
-	[CanEditMultipleObjects]
-	public class UIEffectCapturedImageEditor : RawImageEditor
-	{
-		//################################
-		// Constant or Static Members.
-		//################################
+    /// <summary>
+    /// UIEffectCapturedImage editor.
+    /// </summary>
+    [CustomEditor(typeof(UIEffectCapturedImage))]
+    [CanEditMultipleObjects]
+    public class UIEffectCapturedImageEditor : RawImageEditor
+    {
+        //################################
+        // Constant or Static Members.
+        //################################
 
-		public enum QualityMode : int
-		{
-			Fast = (DesamplingRate.x2 << 0) + (DesamplingRate.x2 << 4) + (FilterMode.Bilinear << 8) + (2 << 10),
-			Medium = (DesamplingRate.x1 << 0) + (DesamplingRate.x1 << 4) + (FilterMode.Bilinear << 8) + (3 << 10),
-			Detail = (DesamplingRate.None << 0) + (DesamplingRate.x1 << 4) + (FilterMode.Bilinear << 8) + (5 << 10),
-			Custom = -1,
-		}
+        public enum QualityMode : int
+        {
+            Fast = (DesamplingRate.x2 << 0) + (DesamplingRate.x2 << 4) + (FilterMode.Bilinear << 8) + (2 << 10),
+            Medium = (DesamplingRate.x1 << 0) + (DesamplingRate.x1 << 4) + (FilterMode.Bilinear << 8) + (3 << 10),
+            Detail = (DesamplingRate.None << 0) + (DesamplingRate.x1 << 4) + (FilterMode.Bilinear << 8) + (5 << 10),
+            Custom = -1,
+        }
 
 
-		//################################
-		// Public/Protected Members.
-		//################################
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable();
-			_spTexture = serializedObject.FindProperty("m_Texture");
-			_spColor = serializedObject.FindProperty("m_Color");
-			_spRaycastTarget = serializedObject.FindProperty("m_RaycastTarget");
-			_spDesamplingRate = serializedObject.FindProperty("m_DesamplingRate");
-			_spReductionRate = serializedObject.FindProperty("m_ReductionRate");
-			_spFilterMode = serializedObject.FindProperty("m_FilterMode");
-			_spIterations = serializedObject.FindProperty("m_BlurIterations");
-			_spKeepSizeToRootCanvas = serializedObject.FindProperty("m_FitToScreen");
-			_spBlurMode = serializedObject.FindProperty("m_BlurMode");
-			_spCaptureOnEnable = serializedObject.FindProperty("m_CaptureOnEnable");
+        //################################
+        // Public/Protected Members.
+        //################################
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            _spTexture = serializedObject.FindProperty("m_Texture");
+            _spColor = serializedObject.FindProperty("m_Color");
+            _spRaycastTarget = serializedObject.FindProperty("m_RaycastTarget");
+            _spDesamplingRate = serializedObject.FindProperty("m_DesamplingRate");
+            _spReductionRate = serializedObject.FindProperty("m_ReductionRate");
+            _spFilterMode = serializedObject.FindProperty("m_FilterMode");
+            _spIterations = serializedObject.FindProperty("m_BlurIterations");
+            _spKeepSizeToRootCanvas = serializedObject.FindProperty("m_FitToScreen");
+            _spBlurMode = serializedObject.FindProperty("m_BlurMode");
+            _spCaptureOnEnable = serializedObject.FindProperty("m_CaptureOnEnable");
 
 
-			_customAdvancedOption = (qualityMode == QualityMode.Custom);
-		}
+            _customAdvancedOption = (qualityMode == QualityMode.Custom);
+        }
 
-		/// <summary>
-		/// Implement this function to make a custom inspector.
-		/// </summary>
-		public override void OnInspectorGUI()
-		{
-			var graphic = (target as UIEffectCapturedImage);
-			serializedObject.Update();
+        /// <summary>
+        /// Implement this function to make a custom inspector.
+        /// </summary>
+        public override void OnInspectorGUI()
+        {
+            var graphic = (target as UIEffectCapturedImage);
+            serializedObject.Update();
 
-			//================
-			// Basic properties.
-			//================
-			EditorGUILayout.PropertyField(_spTexture);
-			EditorGUILayout.PropertyField(_spColor);
-			EditorGUILayout.PropertyField(_spRaycastTarget);
+            //================
+            // Basic properties.
+            //================
+            EditorGUILayout.PropertyField(_spTexture);
+            EditorGUILayout.PropertyField(_spColor);
+            EditorGUILayout.PropertyField(_spRaycastTarget);
 
-			//================
-			// Capture effect.
-			//================
-			GUILayout.Space(10);
-			EditorGUILayout.LabelField("Capture Effect", EditorStyles.boldLabel);
-			UIEffectEditor.DrawEffectProperties(serializedObject, "m_EffectColor");
+            //================
+            // Capture effect.
+            //================
+            GUILayout.Space(10);
+            EditorGUILayout.LabelField("Capture Effect", EditorStyles.boldLabel);
+            UIEffectEditor.DrawEffectProperties(serializedObject, "m_EffectColor");
 
-			//================
-			// Advanced option.
-			//================
-			GUILayout.Space(10);
-			EditorGUILayout.LabelField("Advanced Option", EditorStyles.boldLabel);
+            //================
+            // Advanced option.
+            //================
+            GUILayout.Space(10);
+            EditorGUILayout.LabelField("Advanced Option", EditorStyles.boldLabel);
 
-			EditorGUILayout.PropertyField(_spCaptureOnEnable);// CaptureOnEnable.
-			EditorGUILayout.PropertyField(_spKeepSizeToRootCanvas);// Keep Graphic Size To RootCanvas.
+            EditorGUILayout.PropertyField(_spCaptureOnEnable);// CaptureOnEnable.
+            EditorGUILayout.PropertyField(_spKeepSizeToRootCanvas);// Keep Graphic Size To RootCanvas.
 
-			EditorGUI.BeginChangeCheck();
-			QualityMode quality = qualityMode;
-			quality = (QualityMode)EditorGUILayout.EnumPopup("Quality Mode", quality);
-			if (EditorGUI.EndChangeCheck())
-			{
-				_customAdvancedOption = (quality == QualityMode.Custom);
-				qualityMode = quality;
-			}
+            EditorGUI.BeginChangeCheck();
+            QualityMode quality = qualityMode;
+            quality = (QualityMode)EditorGUILayout.EnumPopup("Quality Mode", quality);
+            if (EditorGUI.EndChangeCheck())
+            {
+                _customAdvancedOption = (quality == QualityMode.Custom);
+                qualityMode = quality;
+            }
 
-			// When qualityMode is `Custom`, show advanced option.
-			if (_customAdvancedOption)
-			{
-				if (_spBlurMode.intValue != 0)
-				{
-					EditorGUILayout.PropertyField(_spIterations);// Iterations.
-				}
-				DrawDesamplingRate(_spReductionRate);// Reduction rate.
+            // When qualityMode is `Custom`, show advanced option.
+            if (_customAdvancedOption)
+            {
+                if (_spBlurMode.intValue != 0)
+                {
+                    EditorGUILayout.PropertyField(_spIterations);// Iterations.
+                }
+                DrawDesamplingRate(_spReductionRate);// Reduction rate.
 
-				EditorGUILayout.Space();
-				EditorGUILayout.LabelField("Result Texture Setting", EditorStyles.boldLabel);
+                EditorGUILayout.Space();
+                EditorGUILayout.LabelField("Result Texture Setting", EditorStyles.boldLabel);
 
-				EditorGUILayout.PropertyField(_spFilterMode);// Filter Mode.
-				DrawDesamplingRate(_spDesamplingRate);// Desampling rate.
-			}
+                EditorGUILayout.PropertyField(_spFilterMode);// Filter Mode.
+                DrawDesamplingRate(_spDesamplingRate);// Desampling rate.
+            }
 
-			serializedObject.ApplyModifiedProperties();
+            serializedObject.ApplyModifiedProperties();
 
-			// Debug.
-			using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
-			{
-				GUILayout.Label("Debug");
+            // Debug.
+            using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
+            {
+                GUILayout.Label("Debug");
 
-				if (GUILayout.Button("Capture", "ButtonLeft"))
-				{
-					graphic.Release();
-					EditorApplication.delayCall += graphic.Capture;
-				}
+                if (GUILayout.Button("Capture", "ButtonLeft"))
+                {
+                    graphic.Release();
+                    EditorApplication.delayCall += graphic.Capture;
+                }
 
-				EditorGUI.BeginDisabledGroup(!(target as UIEffectCapturedImage).capturedTexture);
-				if (GUILayout.Button("Release", "ButtonRight"))
-				{
-					graphic.Release();
-				}
-				EditorGUI.EndDisabledGroup();
-			}
-		}
+                EditorGUI.BeginDisabledGroup(!(target as UIEffectCapturedImage).capturedTexture);
+                if (GUILayout.Button("Release", "ButtonRight"))
+                {
+                    graphic.Release();
+                }
+                EditorGUI.EndDisabledGroup();
+            }
+        }
 
-		//################################
-		// Private Members.
-		//################################
-		const int Bits4 = (1 << 4) - 1;
-		const int Bits2 = (1 << 2) - 1;
-		bool _customAdvancedOption = false;
-		SerializedProperty _spTexture;
-		SerializedProperty _spColor;
-		SerializedProperty _spRaycastTarget;
-		SerializedProperty _spDesamplingRate;
-		SerializedProperty _spReductionRate;
-		SerializedProperty _spFilterMode;
-		SerializedProperty _spBlurMode;
-		SerializedProperty _spIterations;
-		SerializedProperty _spKeepSizeToRootCanvas;
-		SerializedProperty _spCaptureOnEnable;
+        //################################
+        // Private Members.
+        //################################
+        const int Bits4 = (1 << 4) - 1;
+        const int Bits2 = (1 << 2) - 1;
+        bool _customAdvancedOption = false;
+        SerializedProperty _spTexture;
+        SerializedProperty _spColor;
+        SerializedProperty _spRaycastTarget;
+        SerializedProperty _spDesamplingRate;
+        SerializedProperty _spReductionRate;
+        SerializedProperty _spFilterMode;
+        SerializedProperty _spBlurMode;
+        SerializedProperty _spIterations;
+        SerializedProperty _spKeepSizeToRootCanvas;
+        SerializedProperty _spCaptureOnEnable;
 
-		QualityMode qualityMode
-		{
-			get
-			{
-				if (_customAdvancedOption)
-					return QualityMode.Custom;
+        QualityMode qualityMode
+        {
+            get
+            {
+                if (_customAdvancedOption)
+                    return QualityMode.Custom;
 
-				int qualityValue = (_spDesamplingRate.intValue << 0)
-				                   + (_spReductionRate.intValue << 4)
-				                   + (_spFilterMode.intValue << 8)
-				                   + (_spIterations.intValue << 10);
+                int qualityValue = (_spDesamplingRate.intValue << 0)
+                                   + (_spReductionRate.intValue << 4)
+                                   + (_spFilterMode.intValue << 8)
+                                   + (_spIterations.intValue << 10);
 
-				return System.Enum.IsDefined(typeof(QualityMode), qualityValue) ? (QualityMode)qualityValue : QualityMode.Custom;
-			}
-			set
-			{
-				if (value != QualityMode.Custom)
-				{
-					int qualityValue = (int)value;
-					_spDesamplingRate.intValue = (qualityValue >> 0) & Bits4;
-					_spReductionRate.intValue = (qualityValue >> 4) & Bits4;
-					_spFilterMode.intValue = (qualityValue >> 8) & Bits2;
-					_spIterations.intValue = (qualityValue >> 10) & Bits4;
-				}
-			}
-		}
+                return System.Enum.IsDefined(typeof(QualityMode), qualityValue) ? (QualityMode)qualityValue : QualityMode.Custom;
+            }
+            set
+            {
+                if (value != QualityMode.Custom)
+                {
+                    int qualityValue = (int)value;
+                    _spDesamplingRate.intValue = (qualityValue >> 0) & Bits4;
+                    _spReductionRate.intValue = (qualityValue >> 4) & Bits4;
+                    _spFilterMode.intValue = (qualityValue >> 8) & Bits2;
+                    _spIterations.intValue = (qualityValue >> 10) & Bits4;
+                }
+            }
+        }
 
-		/// <summary>
-		/// Draws the desampling rate.
-		/// </summary>
-		void DrawDesamplingRate(SerializedProperty sp)
-		{
-			using (new EditorGUILayout.HorizontalScope())
-			{
-				EditorGUILayout.PropertyField(sp);
-				int w, h;
-				(target as UIEffectCapturedImage).GetDesamplingSize((UIEffectCapturedImage.DesamplingRate)sp.intValue, out w, out h);
-				GUILayout.Label(string.Format("{0}x{1}", w, h), EditorStyles.miniLabel);
-			}
-		}
-	}
+        /// <summary>
+        /// Draws the desampling rate.
+        /// </summary>
+        void DrawDesamplingRate(SerializedProperty sp)
+        {
+            using (new EditorGUILayout.HorizontalScope())
+            {
+                EditorGUILayout.PropertyField(sp);
+                int w, h;
+                (target as UIEffectCapturedImage).GetDesamplingSize((UIEffectCapturedImage.DesamplingRate)sp.intValue, out w, out h);
+                GUILayout.Label(string.Format("{0}x{1}", w, h), EditorStyles.miniLabel);
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIEffectEditor.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIEffectEditor.cs
index cfb3be0a..c5ac8955 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIEffectEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIEffectEditor.cs
@@ -1,253 +1,256 @@
-using UnityEditor;
-using UnityEditorInternal;
-using UnityEngine;
+using System;
 using System.Linq;
-using System;
+using UnityEditor;
+using UnityEngine;
 
 namespace Coffee.UIExtensions.Editors
 {
-	/// <summary>
-	/// UIEffect editor.
-	/// </summary>
-	[CustomEditor(typeof(UIEffect))]
-	[CanEditMultipleObjects]
-	public class UIEffectEditor : BaseMeshEffectEditor
-	{
-		static readonly GUIContent contentEffectColor = new GUIContent ("Effect Color");
+    /// <summary>
+    /// UIEffect editor.
+    /// </summary>
+    [CustomEditor(typeof(UIEffect))]
+    [CanEditMultipleObjects]
+    public class UIEffectEditor : BaseMeshEffectEditor
+    {
+        static readonly GUIContent contentEffectColor = new GUIContent("Effect Color");
 
 
-		//################################
-		// Public/Protected Members.
-		//################################
+        //################################
+        // Public/Protected Members.
+        //################################
 
-		/// <summary>
-		/// Draw effect properties.
-		/// </summary>
-		public static void DrawEffectProperties(SerializedObject serializedObject, string colorProperty = "m_Color")
-		{
-			//================
-			// Effect material.
-			//================
-			var spMaterial = serializedObject.FindProperty("m_EffectMaterial");
-			EditorGUI.BeginDisabledGroup(true);
-			EditorGUILayout.PropertyField(spMaterial);
-			EditorGUI.EndDisabledGroup();
+        /// <summary>
+        /// Draw effect properties.
+        /// </summary>
+        public static void DrawEffectProperties(SerializedObject serializedObject, string colorProperty = "m_Color")
+        {
+            //================
+            // Effect material.
+            //================
+            var spMaterial = serializedObject.FindProperty("m_EffectMaterial");
+            EditorGUI.BeginDisabledGroup(true);
+            EditorGUILayout.PropertyField(spMaterial);
+            EditorGUI.EndDisabledGroup();
 
-			//================
-			// Effect setting.
-			//================
-			var spToneMode = serializedObject.FindProperty("m_EffectMode");
-			EditorGUILayout.PropertyField(spToneMode);
+            //================
+            // Effect setting.
+            //================
+            var spToneMode = serializedObject.FindProperty("m_EffectMode");
+            EditorGUILayout.PropertyField(spToneMode);
 
-			// When tone is enable, show parameters.
-			if (spToneMode.intValue != (int)EffectMode.None)
-			{
-				EditorGUI.indentLevel++;
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_EffectFactor"));
-				EditorGUI.indentLevel--;
-			}
+            // When tone is enable, show parameters.
+            if (spToneMode.intValue != (int)EffectMode.None)
+            {
+                EditorGUI.indentLevel++;
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_EffectFactor"));
+                EditorGUI.indentLevel--;
+            }
 
-			//================
-			// Color setting.
-			//================
-			var spColorMode = serializedObject.FindProperty("m_ColorMode");
-			EditorGUILayout.PropertyField(spColorMode);
+            //================
+            // Color setting.
+            //================
+            var spColorMode = serializedObject.FindProperty("m_ColorMode");
+            EditorGUILayout.PropertyField(spColorMode);
 
-			// When color is enable, show parameters.
-			//if (spColorMode.intValue != (int)ColorMode.Multiply)
-			{
-				EditorGUI.indentLevel++;
+            // When color is enable, show parameters.
+            //if (spColorMode.intValue != (int)ColorMode.Multiply)
+            {
+                EditorGUI.indentLevel++;
 
-				SerializedProperty spColor = serializedObject.FindProperty(colorProperty);
-				if (spColor == null && serializedObject.targetObject is UIEffect) {
-					spColor = new SerializedObject (serializedObject.targetObjects.Select(x=>(x as UIEffect).targetGraphic).ToArray()).FindProperty(colorProperty);
-				}
+                SerializedProperty spColor = serializedObject.FindProperty(colorProperty);
+                if (spColor == null && serializedObject.targetObject is UIEffect)
+                {
+                    spColor = new SerializedObject(serializedObject.targetObjects.Select(x => (x as UIEffect).targetGraphic).ToArray()).FindProperty(colorProperty);
+                }
 
-				EditorGUI.BeginChangeCheck ();
-				EditorGUI.showMixedValue = spColor.hasMultipleDifferentValues;
+                EditorGUI.BeginChangeCheck();
+                EditorGUI.showMixedValue = spColor.hasMultipleDifferentValues;
 #if UNITY_2018_1_OR_NEWER
-				spColor.colorValue = EditorGUILayout.ColorField (contentEffectColor, spColor.colorValue, true, false, false);
+                spColor.colorValue = EditorGUILayout.ColorField(contentEffectColor, spColor.colorValue, true, false, false);
 #else
 				spColor.colorValue = EditorGUILayout.ColorField (contentEffectColor, spColor.colorValue, true, false, false, null);
 #endif
-				if (EditorGUI.EndChangeCheck ()) {
-					spColor.serializedObject.ApplyModifiedProperties ();
-				}
+                if (EditorGUI.EndChangeCheck())
+                {
+                    spColor.serializedObject.ApplyModifiedProperties();
+                }
 
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_ColorFactor"));
-				EditorGUI.indentLevel--;
-			}
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_ColorFactor"));
+                EditorGUI.indentLevel--;
+            }
 
-			//================
-			// Blur setting.
-			//================
-			var spBlurMode = serializedObject.FindProperty("m_BlurMode");
-			EditorGUILayout.PropertyField(spBlurMode);
+            //================
+            // Blur setting.
+            //================
+            var spBlurMode = serializedObject.FindProperty("m_BlurMode");
+            EditorGUILayout.PropertyField(spBlurMode);
 
-			// When blur is enable, show parameters.
-			if (spBlurMode.intValue != (int)BlurMode.None)
-			{
-				EditorGUI.indentLevel++;
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_BlurFactor"));
+            // When blur is enable, show parameters.
+            if (spBlurMode.intValue != (int)BlurMode.None)
+            {
+                EditorGUI.indentLevel++;
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_BlurFactor"));
 
-				var spAdvancedBlur = serializedObject.FindProperty("m_AdvancedBlur");
-				if (spAdvancedBlur != null)
-				{
-					EditorGUILayout.PropertyField(spAdvancedBlur);
-				}
-				EditorGUI.indentLevel--;
-			}
-		}
+                var spAdvancedBlur = serializedObject.FindProperty("m_AdvancedBlur");
+                if (spAdvancedBlur != null)
+                {
+                    EditorGUILayout.PropertyField(spAdvancedBlur);
+                }
+                EditorGUI.indentLevel--;
+            }
+        }
 
-		int GetEnum<T>(Material mat)
-		{
-			Type type = typeof(T);
-			string[] names = System.Enum.GetNames (type);
-			int[] values = System.Enum.GetValues (type) as int[];
+        int GetEnum<T>(Material mat)
+        {
+            Type type = typeof(T);
+            string[] names = System.Enum.GetNames(type);
+            int[] values = System.Enum.GetValues(type) as int[];
 
-			int mode = 0;
-			for(int i=0;i<names.Length;i++)
-			{
-				if (mat.IsKeywordEnabled (names [i].ToUpper()))
-					mode = values [i];
-			}
-			return mode;
-		}
+            int mode = 0;
+            for (int i = 0; i < names.Length; i++)
+            {
+                if (mat.IsKeywordEnabled(names[i].ToUpper()))
+                    mode = values[i];
+            }
+            return mode;
+        }
 
 
-		/// <summary>
-		/// Implement this function to make a custom inspector.
-		/// </summary>
-		public override void OnInspectorGUI()
-		{
-			foreach (var d in targets.Cast<UIEffect> ())
-			{
-				var mat = d.material;
-				if (d.isTMPro && mat)
-				{
-					var so = new SerializedObject (d);
-					EffectMode eMode = (EffectMode)GetEnum<EffectMode> (mat);
-					ColorMode cMode = (ColorMode)GetEnum<ColorMode> (mat);
-					BlurMode bMode = (BlurMode)GetEnum<BlurMode> (mat);
-					bool aBlur = mat.IsKeywordEnabled("EX");
-					if (d.effectMode != eMode || d.colorMode != cMode || d.blurMode != bMode || so.FindProperty ("m_AdvancedBlur").boolValue != aBlur)
-					{
-						so.FindProperty ("m_EffectMode").intValue = (int)eMode;
-						so.FindProperty ("m_ColorMode").intValue = (int)cMode;
-						so.FindProperty ("m_BlurMode").intValue = (int)bMode;
-						so.FindProperty ("m_AdvancedBlur").boolValue = aBlur;
-						so.ApplyModifiedProperties ();
-					}
-				}
-			}
+        /// <summary>
+        /// Implement this function to make a custom inspector.
+        /// </summary>
+        public override void OnInspectorGUI()
+        {
+            foreach (var d in targets.Cast<UIEffect>())
+            {
+                var mat = d.material;
+                if (d.isTMPro && mat)
+                {
+                    var so = new SerializedObject(d);
+                    EffectMode eMode = (EffectMode)GetEnum<EffectMode>(mat);
+                    ColorMode cMode = (ColorMode)GetEnum<ColorMode>(mat);
+                    BlurMode bMode = (BlurMode)GetEnum<BlurMode>(mat);
+                    bool aBlur = mat.IsKeywordEnabled("EX");
+                    if (d.effectMode != eMode || d.colorMode != cMode || d.blurMode != bMode || so.FindProperty("m_AdvancedBlur").boolValue != aBlur)
+                    {
+                        so.FindProperty("m_EffectMode").intValue = (int)eMode;
+                        so.FindProperty("m_ColorMode").intValue = (int)cMode;
+                        so.FindProperty("m_BlurMode").intValue = (int)bMode;
+                        so.FindProperty("m_AdvancedBlur").boolValue = aBlur;
+                        so.ApplyModifiedProperties();
+                    }
+                }
+            }
 
 
-			serializedObject.Update();
-			bool isAnyTMPro = targets.Cast<UIEffect>().Any(x => x.isTMPro);
-			var c = target as UIEffect;
+            serializedObject.Update();
+            bool isAnyTMPro = targets.Cast<UIEffect>().Any(x => x.isTMPro);
+            var c = target as UIEffect;
 
-			//================
-			// Effect material.
-			//================
-			var spMaterial = serializedObject.FindProperty("m_EffectMaterial");
-			EditorGUI.BeginDisabledGroup(true);
-			EditorGUILayout.PropertyField(spMaterial);
-			EditorGUI.EndDisabledGroup();
+            //================
+            // Effect material.
+            //================
+            var spMaterial = serializedObject.FindProperty("m_EffectMaterial");
+            EditorGUI.BeginDisabledGroup(true);
+            EditorGUILayout.PropertyField(spMaterial);
+            EditorGUI.EndDisabledGroup();
 
-			//================
-			// Effect setting.
-			//================
-			var spToneMode = serializedObject.FindProperty("m_EffectMode");
-			using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
-				EditorGUILayout.PropertyField(spToneMode);
+            //================
+            // Effect setting.
+            //================
+            var spToneMode = serializedObject.FindProperty("m_EffectMode");
+            using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
+                EditorGUILayout.PropertyField(spToneMode);
 
-			// When tone is enable, show parameters.
-			if (spToneMode.intValue != (int)EffectMode.None)
-			{
-				EditorGUI.indentLevel++;
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_EffectFactor"));
-				EditorGUI.indentLevel--;
-			}
+            // When tone is enable, show parameters.
+            if (spToneMode.intValue != (int)EffectMode.None)
+            {
+                EditorGUI.indentLevel++;
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_EffectFactor"));
+                EditorGUI.indentLevel--;
+            }
 
-			//================
-			// Color setting.
-			//================
-			var spColorMode = serializedObject.FindProperty("m_ColorMode");
-			using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
-				EditorGUILayout.PropertyField(spColorMode);
+            //================
+            // Color setting.
+            //================
+            var spColorMode = serializedObject.FindProperty("m_ColorMode");
+            using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
+                EditorGUILayout.PropertyField(spColorMode);
 
-			// When color is enable, show parameters.
-			//if (spColorMode.intValue != (int)ColorMode.Multiply)
-			{
-				EditorGUI.indentLevel++;
+            // When color is enable, show parameters.
+            //if (spColorMode.intValue != (int)ColorMode.Multiply)
+            {
+                EditorGUI.indentLevel++;
 
-				SerializedProperty spColor = serializedObject.FindProperty("m_Color");
-				if (spColor == null && serializedObject.targetObject is UIEffect) {
-					spColor = new SerializedObject (serializedObject.targetObjects.Select(x=>(x as UIEffect).targetGraphic).ToArray()).FindProperty(!isAnyTMPro ? "m_Color" : "m_fontColor");
-				}
+                SerializedProperty spColor = serializedObject.FindProperty("m_Color");
+                if (spColor == null && serializedObject.targetObject is UIEffect)
+                {
+                    spColor = new SerializedObject(serializedObject.targetObjects.Select(x => (x as UIEffect).targetGraphic).ToArray()).FindProperty(!isAnyTMPro ? "m_Color" : "m_fontColor");
+                }
 
-				EditorGUI.BeginChangeCheck ();
-				EditorGUI.showMixedValue = spColor.hasMultipleDifferentValues;
-				#if UNITY_2018_1_OR_NEWER
-				spColor.colorValue = EditorGUILayout.ColorField (contentEffectColor, spColor.colorValue, true, false, false);
-				#else
+                EditorGUI.BeginChangeCheck();
+                EditorGUI.showMixedValue = spColor.hasMultipleDifferentValues;
+#if UNITY_2018_1_OR_NEWER
+                spColor.colorValue = EditorGUILayout.ColorField(contentEffectColor, spColor.colorValue, true, false, false);
+#else
 				spColor.colorValue = EditorGUILayout.ColorField (contentEffectColor, spColor.colorValue, true, false, false, null);
-				#endif
-				if (EditorGUI.EndChangeCheck ()) {
-					spColor.serializedObject.ApplyModifiedProperties ();
-				}
+#endif
+                if (EditorGUI.EndChangeCheck())
+                {
+                    spColor.serializedObject.ApplyModifiedProperties();
+                }
 
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_ColorFactor"));
-				EditorGUI.indentLevel--;
-			}
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_ColorFactor"));
+                EditorGUI.indentLevel--;
+            }
 
-			//================
-			// Blur setting.
-			//================
-			var spBlurMode = serializedObject.FindProperty("m_BlurMode");
-			using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
-				EditorGUILayout.PropertyField(spBlurMode);
+            //================
+            // Blur setting.
+            //================
+            var spBlurMode = serializedObject.FindProperty("m_BlurMode");
+            using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
+                EditorGUILayout.PropertyField(spBlurMode);
 
-			// When blur is enable, show parameters.
-			if (spBlurMode.intValue != (int)BlurMode.None)
-			{
-				EditorGUI.indentLevel++;
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_BlurFactor"));
+            // When blur is enable, show parameters.
+            if (spBlurMode.intValue != (int)BlurMode.None)
+            {
+                EditorGUI.indentLevel++;
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_BlurFactor"));
 
-				var spAdvancedBlur = serializedObject.FindProperty("m_AdvancedBlur");
-				using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
-					EditorGUILayout.PropertyField(spAdvancedBlur);
-				EditorGUI.indentLevel--;
-			}
+                var spAdvancedBlur = serializedObject.FindProperty("m_AdvancedBlur");
+                using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
+                    EditorGUILayout.PropertyField(spAdvancedBlur);
+                EditorGUI.indentLevel--;
+            }
 
-			serializedObject.ApplyModifiedProperties();
+            serializedObject.ApplyModifiedProperties();
 
-			c.ShowTMProWarning (_shader, _mobileShader, _spriteShader, mat => {});
-			ShowCanvasChannelsWarning ();
+            c.ShowTMProWarning(_shader, _mobileShader, _spriteShader, mat => { });
+            ShowCanvasChannelsWarning();
 
-			ShowMaterialEditors (c.materials, 1, c.materials.Length - 1);
+            ShowMaterialEditors(c.materials, 1, c.materials.Length - 1);
 
-			serializedObject.ApplyModifiedProperties();
-		}
+            serializedObject.ApplyModifiedProperties();
+        }
 
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable ();
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
 
-			_shader = Shader.Find ("TextMeshPro/Distance Field (UIEffect)");
-			_mobileShader = Shader.Find ("TextMeshPro/Mobile/Distance Field (UIEffect)");
-			_spriteShader = Shader.Find ("TextMeshPro/Sprite (UIEffect)");
-		}
+            _shader = Shader.Find("TextMeshPro/Distance Field (UIEffect)");
+            _mobileShader = Shader.Find("TextMeshPro/Mobile/Distance Field (UIEffect)");
+            _spriteShader = Shader.Find("TextMeshPro/Sprite (UIEffect)");
+        }
 
-		//################################
-		// Private Members.
-		//################################
-		Shader _shader;
-		Shader _mobileShader;
-		Shader _spriteShader;
+        //################################
+        // Private Members.
+        //################################
+        Shader _shader;
+        Shader _mobileShader;
+        Shader _spriteShader;
 
-	}
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIGradientEditor.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIGradientEditor.cs
index e03ca117..47b30350 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIGradientEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIGradientEditor.cs
@@ -1,102 +1,101 @@
 using UnityEditor;
 using UnityEngine;
-using UnityEngine.UI;
 
 namespace Coffee.UIExtensions.Editors
 {
-	/// <summary>
-	/// UIEffect editor.
-	/// </summary>
-	[CustomEditor(typeof(UIGradient))]
-	[CanEditMultipleObjects]
-	public class UIGradientEditor : Editor
-	{
-		public override void OnInspectorGUI()
-		{
-			serializedObject.Update();
+    /// <summary>
+    /// UIEffect editor.
+    /// </summary>
+    [CustomEditor(typeof(UIGradient))]
+    [CanEditMultipleObjects]
+    public class UIGradientEditor : Editor
+    {
+        public override void OnInspectorGUI()
+        {
+            serializedObject.Update();
 
-			//================
-			// Direction.
-			//================
-			var spDirection = serializedObject.FindProperty("m_Direction");
-			EditorGUILayout.PropertyField(spDirection);
+            //================
+            // Direction.
+            //================
+            var spDirection = serializedObject.FindProperty("m_Direction");
+            EditorGUILayout.PropertyField(spDirection);
 
 
-			//================
-			// Color.
-			//================
-			var spColor1 = serializedObject.FindProperty("m_Color1");
-			var spColor2 = serializedObject.FindProperty("m_Color2");
-			var spColor3 = serializedObject.FindProperty("m_Color3");
-			var spColor4 = serializedObject.FindProperty("m_Color4");
-			switch ((UIGradient.Direction)spDirection.intValue)
-			{
-				case UIGradient.Direction.Horizontal:
-					EditorGUILayout.PropertyField(spColor1, new GUIContent("Left"));
-					EditorGUILayout.PropertyField(spColor2, new GUIContent("Right"));
-					break;
-				case UIGradient.Direction.Vertical:
-					EditorGUILayout.PropertyField(spColor1, new GUIContent("Top"));
-					EditorGUILayout.PropertyField(spColor2, new GUIContent("Bottom"));
-					break;
-				case UIGradient.Direction.Angle:
-					EditorGUILayout.PropertyField(spColor1, new GUIContent("Color 1"));
-					EditorGUILayout.PropertyField(spColor2, new GUIContent("Color 2"));
-					break;
-				case UIGradient.Direction.Diagonal:
-					Rect r = EditorGUILayout.GetControlRect(false, 34);
+            //================
+            // Color.
+            //================
+            var spColor1 = serializedObject.FindProperty("m_Color1");
+            var spColor2 = serializedObject.FindProperty("m_Color2");
+            var spColor3 = serializedObject.FindProperty("m_Color3");
+            var spColor4 = serializedObject.FindProperty("m_Color4");
+            switch ((UIGradient.Direction)spDirection.intValue)
+            {
+                case UIGradient.Direction.Horizontal:
+                    EditorGUILayout.PropertyField(spColor1, new GUIContent("Left"));
+                    EditorGUILayout.PropertyField(spColor2, new GUIContent("Right"));
+                    break;
+                case UIGradient.Direction.Vertical:
+                    EditorGUILayout.PropertyField(spColor1, new GUIContent("Top"));
+                    EditorGUILayout.PropertyField(spColor2, new GUIContent("Bottom"));
+                    break;
+                case UIGradient.Direction.Angle:
+                    EditorGUILayout.PropertyField(spColor1, new GUIContent("Color 1"));
+                    EditorGUILayout.PropertyField(spColor2, new GUIContent("Color 2"));
+                    break;
+                case UIGradient.Direction.Diagonal:
+                    Rect r = EditorGUILayout.GetControlRect(false, 34);
 
-					r = EditorGUI.PrefixLabel(r, new GUIContent("Diagonal Color"));
-					float w = r.width / 2;
+                    r = EditorGUI.PrefixLabel(r, new GUIContent("Diagonal Color"));
+                    float w = r.width / 2;
 
-					EditorGUI.PropertyField(new Rect(r.x, r.y, w, 16), spColor3, GUIContent.none);
-					EditorGUI.PropertyField(new Rect(r.x + w, r.y, w, 16), spColor4, GUIContent.none);
-					EditorGUI.PropertyField(new Rect(r.x, r.y + 18, w, 16), spColor1, GUIContent.none);
-					EditorGUI.PropertyField(new Rect(r.x + w, r.y + 18, w, 16), spColor2, GUIContent.none);
-					break;
-			}
+                    EditorGUI.PropertyField(new Rect(r.x, r.y, w, 16), spColor3, GUIContent.none);
+                    EditorGUI.PropertyField(new Rect(r.x + w, r.y, w, 16), spColor4, GUIContent.none);
+                    EditorGUI.PropertyField(new Rect(r.x, r.y + 18, w, 16), spColor1, GUIContent.none);
+                    EditorGUI.PropertyField(new Rect(r.x + w, r.y + 18, w, 16), spColor2, GUIContent.none);
+                    break;
+            }
 
 
-			//================
-			// Angle.
-			//================
-			if ((int)UIGradient.Direction.Angle <= spDirection.intValue)
-			{
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Rotation"));
-			}
+            //================
+            // Angle.
+            //================
+            if ((int)UIGradient.Direction.Angle <= spDirection.intValue)
+            {
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Rotation"));
+            }
 
 
-			//================
-			// Offset.
-			//================
-			if ((int)UIGradient.Direction.Diagonal == spDirection.intValue)
-			{
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Offset1"), new GUIContent("Vertical Offset"));
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Offset2"), new GUIContent("Horizontal Offset"));
-			}
-			else
-			{
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Offset1"), new GUIContent("Offset"));
-			}
+            //================
+            // Offset.
+            //================
+            if ((int)UIGradient.Direction.Diagonal == spDirection.intValue)
+            {
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Offset1"), new GUIContent("Vertical Offset"));
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Offset2"), new GUIContent("Horizontal Offset"));
+            }
+            else
+            {
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Offset1"), new GUIContent("Offset"));
+            }
 
 
-			//================
-			// Advanced options.
-			//================
-			EditorGUILayout.Space();
-			EditorGUILayout.LabelField("Advanced Options", EditorStyles.boldLabel);
-			EditorGUI.indentLevel++;
-			{
-				//if ((target as UIGradient).targetGraphic is Text)
-					EditorGUILayout.PropertyField(serializedObject.FindProperty("m_GradientStyle"));
-				
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_ColorSpace"));
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_IgnoreAspectRatio"));
-			}
-			EditorGUI.indentLevel--;
+            //================
+            // Advanced options.
+            //================
+            EditorGUILayout.Space();
+            EditorGUILayout.LabelField("Advanced Options", EditorStyles.boldLabel);
+            EditorGUI.indentLevel++;
+            {
+                //if ((target as UIGradient).targetGraphic is Text)
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_GradientStyle"));
 
-			serializedObject.ApplyModifiedProperties();
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_ColorSpace"));
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_IgnoreAspectRatio"));
+            }
+            EditorGUI.indentLevel--;
 
-		}
-	}
+            serializedObject.ApplyModifiedProperties();
+
+        }
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIHsvModifierEditor.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIHsvModifierEditor.cs
index 928c036d..e7cb0a9c 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIHsvModifierEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIHsvModifierEditor.cs
@@ -1,84 +1,82 @@
 using UnityEditor;
-using UnityEditorInternal;
 using UnityEngine;
-using System.Linq;
 
 namespace Coffee.UIExtensions.Editors
 {
-	/// <summary>
-	/// UIEffect editor.
-	/// </summary>
-	[CustomEditor(typeof(UIHsvModifier))]
-	[CanEditMultipleObjects]
-	public class UIHsvModifierEditor : BaseMeshEffectEditor
-	{
-		//################################
-		// Public/Protected Members.
-		//################################
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable ();
+    /// <summary>
+    /// UIEffect editor.
+    /// </summary>
+    [CustomEditor(typeof(UIHsvModifier))]
+    [CanEditMultipleObjects]
+    public class UIHsvModifierEditor : BaseMeshEffectEditor
+    {
+        //################################
+        // Public/Protected Members.
+        //################################
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
 
-			_spMaterial = serializedObject.FindProperty("m_EffectMaterial");
-			_spTargetColor = serializedObject.FindProperty("m_TargetColor");
-			_spRange = serializedObject.FindProperty("m_Range");
-			_spHue = serializedObject.FindProperty("m_Hue");
-			_spSaturation = serializedObject.FindProperty("m_Saturation");
-			_spValue = serializedObject.FindProperty("m_Value");
+            _spMaterial = serializedObject.FindProperty("m_EffectMaterial");
+            _spTargetColor = serializedObject.FindProperty("m_TargetColor");
+            _spRange = serializedObject.FindProperty("m_Range");
+            _spHue = serializedObject.FindProperty("m_Hue");
+            _spSaturation = serializedObject.FindProperty("m_Saturation");
+            _spValue = serializedObject.FindProperty("m_Value");
 
-			_shader = Shader.Find ("TextMeshPro/Distance Field (UIHsvModifier)");
-			_mobileShader = Shader.Find ("TextMeshPro/Mobile/Distance Field (UIHsvModifier)");
-			_spriteShader = Shader.Find ("TextMeshPro/Sprite (UIHsvModifier)");
-		}
+            _shader = Shader.Find("TextMeshPro/Distance Field (UIHsvModifier)");
+            _mobileShader = Shader.Find("TextMeshPro/Mobile/Distance Field (UIHsvModifier)");
+            _spriteShader = Shader.Find("TextMeshPro/Sprite (UIHsvModifier)");
+        }
 
 
-		/// <summary>
-		/// Implement this function to make a custom inspector.
-		/// </summary>
-		public override void OnInspectorGUI()
-		{
-			serializedObject.Update();
+        /// <summary>
+        /// Implement this function to make a custom inspector.
+        /// </summary>
+        public override void OnInspectorGUI()
+        {
+            serializedObject.Update();
 
-			//================
-			// Effect material.
-			//================
-			EditorGUI.BeginDisabledGroup(true);
-			EditorGUILayout.PropertyField(_spMaterial);
-			EditorGUI.EndDisabledGroup();
+            //================
+            // Effect material.
+            //================
+            EditorGUI.BeginDisabledGroup(true);
+            EditorGUILayout.PropertyField(_spMaterial);
+            EditorGUI.EndDisabledGroup();
 
-			//================
-			// Effect setting.
-			//================
-			EditorGUILayout.PropertyField(_spTargetColor);
-			EditorGUILayout.PropertyField(_spRange);
-			EditorGUILayout.PropertyField(_spHue);
-			EditorGUILayout.PropertyField(_spSaturation);
-			EditorGUILayout.PropertyField(_spValue);
+            //================
+            // Effect setting.
+            //================
+            EditorGUILayout.PropertyField(_spTargetColor);
+            EditorGUILayout.PropertyField(_spRange);
+            EditorGUILayout.PropertyField(_spHue);
+            EditorGUILayout.PropertyField(_spSaturation);
+            EditorGUILayout.PropertyField(_spValue);
 
-			var c = target as UIHsvModifier;
-			c.ShowTMProWarning (_shader, _mobileShader, _spriteShader, mat => {});
-			ShowCanvasChannelsWarning ();
+            var c = target as UIHsvModifier;
+            c.ShowTMProWarning(_shader, _mobileShader, _spriteShader, mat => { });
+            ShowCanvasChannelsWarning();
 
-			ShowMaterialEditors (c.materials, 1, c.materials.Length - 1);
+            ShowMaterialEditors(c.materials, 1, c.materials.Length - 1);
 
-			serializedObject.ApplyModifiedProperties();
-		}
+            serializedObject.ApplyModifiedProperties();
+        }
 
-		//################################
-		// Private Members.
-		//################################
-		SerializedProperty _spMaterial;
-		SerializedProperty _spTargetColor;
-		SerializedProperty _spRange;
-		SerializedProperty _spHue;
-		SerializedProperty _spSaturation;
-		SerializedProperty _spValue;
+        //################################
+        // Private Members.
+        //################################
+        SerializedProperty _spMaterial;
+        SerializedProperty _spTargetColor;
+        SerializedProperty _spRange;
+        SerializedProperty _spHue;
+        SerializedProperty _spSaturation;
+        SerializedProperty _spValue;
 
-		Shader _shader;
-		Shader _mobileShader;
-		Shader _spriteShader;
-	}
+        Shader _shader;
+        Shader _mobileShader;
+        Shader _spriteShader;
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIShadowEditor.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIShadowEditor.cs
index 1e9e729d..7f8a6136 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIShadowEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIShadowEditor.cs
@@ -1,54 +1,52 @@
 using UnityEditor;
-using UnityEditorInternal;
-using UnityEngine;
 
 namespace Coffee.UIExtensions.Editors
 {
-	/// <summary>
-	/// UIShadow editor.
-	/// </summary>
-	[CustomEditor(typeof(UIShadow))]
-	[CanEditMultipleObjects]
-	public class UIShadowEditor : Editor
-	{
-		UIEffect uiEffect;
+    /// <summary>
+    /// UIShadow editor.
+    /// </summary>
+    [CustomEditor(typeof(UIShadow))]
+    [CanEditMultipleObjects]
+    public class UIShadowEditor : Editor
+    {
+        UIEffect uiEffect;
 
-		void OnEnable()
-		{
-			uiEffect = (target as UIShadow).GetComponent<UIEffect>();
+        void OnEnable()
+        {
+            uiEffect = (target as UIShadow).GetComponent<UIEffect>();
 
-		}
+        }
 
 
-		/// <summary>
-		/// Implement this function to make a custom inspector.
-		/// </summary>
-		public override void OnInspectorGUI()
-		{
-			serializedObject.Update();
+        /// <summary>
+        /// Implement this function to make a custom inspector.
+        /// </summary>
+        public override void OnInspectorGUI()
+        {
+            serializedObject.Update();
 
-			//================
-			// Shadow setting.
-			//================
-			var spShadowMode = serializedObject.FindProperty("m_Style");
-			EditorGUILayout.PropertyField(spShadowMode);
+            //================
+            // Shadow setting.
+            //================
+            var spShadowMode = serializedObject.FindProperty("m_Style");
+            EditorGUILayout.PropertyField(spShadowMode);
 
-			// When shadow is enable, show parameters.
-			if (spShadowMode.intValue != (int)ShadowStyle.None)
-			{
-				EditorGUI.indentLevel++;
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_EffectDistance"));
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_EffectColor"));
-				EditorGUILayout.PropertyField(serializedObject.FindProperty("m_UseGraphicAlpha"));
+            // When shadow is enable, show parameters.
+            if (spShadowMode.intValue != (int)ShadowStyle.None)
+            {
+                EditorGUI.indentLevel++;
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_EffectDistance"));
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_EffectColor"));
+                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_UseGraphicAlpha"));
 
-				if (uiEffect && uiEffect.blurMode != BlurMode.None)
-				{
-					EditorGUILayout.PropertyField(serializedObject.FindProperty("m_BlurFactor"));
-				}
-				EditorGUI.indentLevel--;
-			}
+                if (uiEffect && uiEffect.blurMode != BlurMode.None)
+                {
+                    EditorGUILayout.PropertyField(serializedObject.FindProperty("m_BlurFactor"));
+                }
+                EditorGUI.indentLevel--;
+            }
 
-			serializedObject.ApplyModifiedProperties();
-		}
-	}
+            serializedObject.ApplyModifiedProperties();
+        }
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIShinyEditor.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIShinyEditor.cs
index 5d9cfe04..98923856 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIShinyEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UIShinyEditor.cs
@@ -1,135 +1,133 @@
 using UnityEditor;
-using UnityEditorInternal;
 using UnityEngine;
-using System.Linq;
 
 namespace Coffee.UIExtensions.Editors
 {
-	/// <summary>
-	/// UIEffect editor.
-	/// </summary>
-	[CustomEditor(typeof(UIShiny))]
-	[CanEditMultipleObjects]
-	public class UIShinyEditor : BaseMeshEffectEditor
-	{
-		//################################
-		// Public/Protected Members.
-		//################################
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable ();
+    /// <summary>
+    /// UIEffect editor.
+    /// </summary>
+    [CustomEditor(typeof(UIShiny))]
+    [CanEditMultipleObjects]
+    public class UIShinyEditor : BaseMeshEffectEditor
+    {
+        //################################
+        // Public/Protected Members.
+        //################################
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
 
-			_spMaterial = serializedObject.FindProperty("m_EffectMaterial");
-			_spEffectFactor = serializedObject.FindProperty("m_EffectFactor");
-			_spEffectArea = serializedObject.FindProperty("m_EffectArea");
-			_spWidth = serializedObject.FindProperty("m_Width");
-			_spRotation = serializedObject.FindProperty("m_Rotation");
-			_spSoftness = serializedObject.FindProperty("m_Softness");
-			_spBrightness = serializedObject.FindProperty("m_Brightness");
-			_spGloss = serializedObject.FindProperty("m_Gloss");
-			var player = serializedObject.FindProperty("m_Player");
-			_spPlay = player.FindPropertyRelative("play");
-			_spDuration = player.FindPropertyRelative("duration");
-			_spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay");
-			_spLoop = player.FindPropertyRelative("loop");
-			_spLoopDelay = player.FindPropertyRelative("loopDelay");
-			_spUpdateMode = player.FindPropertyRelative("updateMode");
+            _spMaterial = serializedObject.FindProperty("m_EffectMaterial");
+            _spEffectFactor = serializedObject.FindProperty("m_EffectFactor");
+            _spEffectArea = serializedObject.FindProperty("m_EffectArea");
+            _spWidth = serializedObject.FindProperty("m_Width");
+            _spRotation = serializedObject.FindProperty("m_Rotation");
+            _spSoftness = serializedObject.FindProperty("m_Softness");
+            _spBrightness = serializedObject.FindProperty("m_Brightness");
+            _spGloss = serializedObject.FindProperty("m_Gloss");
+            var player = serializedObject.FindProperty("m_Player");
+            _spPlay = player.FindPropertyRelative("play");
+            _spDuration = player.FindPropertyRelative("duration");
+            _spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay");
+            _spLoop = player.FindPropertyRelative("loop");
+            _spLoopDelay = player.FindPropertyRelative("loopDelay");
+            _spUpdateMode = player.FindPropertyRelative("updateMode");
 
 
-			_shader = Shader.Find ("TextMeshPro/Distance Field (UIShiny)");
-			_mobileShader = Shader.Find ("TextMeshPro/Mobile/Distance Field (UIShiny)");
-			_spriteShader = Shader.Find ("TextMeshPro/Sprite (UIShiny)");
-		}
+            _shader = Shader.Find("TextMeshPro/Distance Field (UIShiny)");
+            _mobileShader = Shader.Find("TextMeshPro/Mobile/Distance Field (UIShiny)");
+            _spriteShader = Shader.Find("TextMeshPro/Sprite (UIShiny)");
+        }
 
 
-		/// <summary>
-		/// Implement this function to make a custom inspector.
-		/// </summary>
-		public override void OnInspectorGUI()
-		{
-			serializedObject.Update();
+        /// <summary>
+        /// Implement this function to make a custom inspector.
+        /// </summary>
+        public override void OnInspectorGUI()
+        {
+            serializedObject.Update();
 
-			//================
-			// Effect material.
-			//================
-			EditorGUI.BeginDisabledGroup(true);
-			EditorGUILayout.PropertyField(_spMaterial);
-			EditorGUI.EndDisabledGroup();
+            //================
+            // Effect material.
+            //================
+            EditorGUI.BeginDisabledGroup(true);
+            EditorGUILayout.PropertyField(_spMaterial);
+            EditorGUI.EndDisabledGroup();
 
-			//================
-			// Effect setting.
-			//================
-			EditorGUILayout.PropertyField(_spEffectFactor);
-			EditorGUILayout.PropertyField(_spWidth);
-			EditorGUILayout.PropertyField(_spRotation);
-			EditorGUILayout.PropertyField(_spSoftness);
-			EditorGUILayout.PropertyField(_spBrightness);
-			EditorGUILayout.PropertyField(_spGloss);
+            //================
+            // Effect setting.
+            //================
+            EditorGUILayout.PropertyField(_spEffectFactor);
+            EditorGUILayout.PropertyField(_spWidth);
+            EditorGUILayout.PropertyField(_spRotation);
+            EditorGUILayout.PropertyField(_spSoftness);
+            EditorGUILayout.PropertyField(_spBrightness);
+            EditorGUILayout.PropertyField(_spGloss);
 
-			//================
-			// Advanced option.
-			//================
-			EditorGUILayout.PropertyField(_spEffectArea);
+            //================
+            // Advanced option.
+            //================
+            EditorGUILayout.PropertyField(_spEffectArea);
 
-			//================
-			// Effect player.
-			//================
-			EditorGUILayout.PropertyField(_spPlay);
-			EditorGUILayout.PropertyField(_spDuration);
-			EditorGUILayout.PropertyField(_spInitialPlayDelay);
-			EditorGUILayout.PropertyField(_spLoop);
-			EditorGUILayout.PropertyField(_spLoopDelay);
-			EditorGUILayout.PropertyField(_spUpdateMode);
+            //================
+            // Effect player.
+            //================
+            EditorGUILayout.PropertyField(_spPlay);
+            EditorGUILayout.PropertyField(_spDuration);
+            EditorGUILayout.PropertyField(_spInitialPlayDelay);
+            EditorGUILayout.PropertyField(_spLoop);
+            EditorGUILayout.PropertyField(_spLoopDelay);
+            EditorGUILayout.PropertyField(_spUpdateMode);
 
-			// Debug.
-			using (new EditorGUI.DisabledGroupScope(!Application.isPlaying))
-			using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
-			{
-				GUILayout.Label("Debug");
+            // Debug.
+            using (new EditorGUI.DisabledGroupScope(!Application.isPlaying))
+            using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
+            {
+                GUILayout.Label("Debug");
 
-				if (GUILayout.Button("Play", "ButtonLeft"))
-				{
-					(target as UIShiny).Play();
-				}
+                if (GUILayout.Button("Play", "ButtonLeft"))
+                {
+                    (target as UIShiny).Play();
+                }
 
-				if (GUILayout.Button("Stop", "ButtonRight"))
-				{
-					(target as UIShiny).Stop();
-				}
-			}
+                if (GUILayout.Button("Stop", "ButtonRight"))
+                {
+                    (target as UIShiny).Stop();
+                }
+            }
 
-			var c = target as UIShiny;
-			c.ShowTMProWarning (_shader, _mobileShader, _spriteShader, mat => {});
-			ShowCanvasChannelsWarning ();
+            var c = target as UIShiny;
+            c.ShowTMProWarning(_shader, _mobileShader, _spriteShader, mat => { });
+            ShowCanvasChannelsWarning();
 
-			ShowMaterialEditors (c.materials, 1, c.materials.Length - 1);
+            ShowMaterialEditors(c.materials, 1, c.materials.Length - 1);
 
-			serializedObject.ApplyModifiedProperties();
-		}
+            serializedObject.ApplyModifiedProperties();
+        }
 
-		//################################
-		// Private Members.
-		//################################
-		SerializedProperty _spMaterial;
-		SerializedProperty _spEffectFactor;
-		SerializedProperty _spWidth;
-		SerializedProperty _spRotation;
-		SerializedProperty _spSoftness;
-		SerializedProperty _spBrightness;
-		SerializedProperty _spGloss;
-		SerializedProperty _spEffectArea;
-		SerializedProperty _spPlay;
-		SerializedProperty _spLoop;
-		SerializedProperty _spLoopDelay;
-		SerializedProperty _spDuration;
-		SerializedProperty _spInitialPlayDelay;
-		SerializedProperty _spUpdateMode;
+        //################################
+        // Private Members.
+        //################################
+        SerializedProperty _spMaterial;
+        SerializedProperty _spEffectFactor;
+        SerializedProperty _spWidth;
+        SerializedProperty _spRotation;
+        SerializedProperty _spSoftness;
+        SerializedProperty _spBrightness;
+        SerializedProperty _spGloss;
+        SerializedProperty _spEffectArea;
+        SerializedProperty _spPlay;
+        SerializedProperty _spLoop;
+        SerializedProperty _spLoopDelay;
+        SerializedProperty _spDuration;
+        SerializedProperty _spInitialPlayDelay;
+        SerializedProperty _spUpdateMode;
 
-		Shader _shader;
-		Shader _mobileShader;
-		Shader _spriteShader;
-	}
+        Shader _shader;
+        Shader _mobileShader;
+        Shader _spriteShader;
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UITransitionEffectEditor.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UITransitionEffectEditor.cs
index f511126f..fad4a6e1 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UITransitionEffectEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/Editor/UITransitionEffectEditor.cs
@@ -1,190 +1,189 @@
-using UnityEditor;
-using UnityEditorInternal;
+using System.Linq;
+using UnityEditor;
 using UnityEngine;
-using System.Linq;
 
 namespace Coffee.UIExtensions.Editors
 {
-	/// <summary>
-	/// UIEffect editor.
-	/// </summary>
-	[CustomEditor(typeof(UITransitionEffect))]
-	[CanEditMultipleObjects]
-	public class UITransitionEffectEditor : BaseMeshEffectEditor
-	{
-		static int s_NoiseTexId;
+    /// <summary>
+    /// UIEffect editor.
+    /// </summary>
+    [CustomEditor(typeof(UITransitionEffect))]
+    [CanEditMultipleObjects]
+    public class UITransitionEffectEditor : BaseMeshEffectEditor
+    {
+        static int s_NoiseTexId;
 
-		//################################
-		// Public/Protected Members.
-		//################################
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable();
+        //################################
+        // Public/Protected Members.
+        //################################
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
 
-			_spMaterial = serializedObject.FindProperty("m_EffectMaterial");
-			_spEffectMode = serializedObject.FindProperty("m_EffectMode");
-			_spEffectFactor = serializedObject.FindProperty("m_EffectFactor");
-			_spEffectArea = serializedObject.FindProperty("m_EffectArea");
-			_spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio");
-			_spDissolveWidth = serializedObject.FindProperty("m_DissolveWidth");
-			_spDissolveSoftness = serializedObject.FindProperty("m_DissolveSoftness");
-			_spDissolveColor = serializedObject.FindProperty("m_DissolveColor");
-			_spTransitionTexture = serializedObject.FindProperty("m_TransitionTexture");
-			var player = serializedObject.FindProperty("m_Player");
-			_spPlay = player.FindPropertyRelative("play");
-			_spDuration = player.FindPropertyRelative("duration");
-			_spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay");
-			_spLoop = player.FindPropertyRelative("loop");
-			_spLoopDelay = player.FindPropertyRelative("loopDelay");
-			_spUpdateMode = player.FindPropertyRelative("updateMode");
-			_spPassRayOnHidden = serializedObject.FindProperty("m_PassRayOnHidden");
+            _spMaterial = serializedObject.FindProperty("m_EffectMaterial");
+            _spEffectMode = serializedObject.FindProperty("m_EffectMode");
+            _spEffectFactor = serializedObject.FindProperty("m_EffectFactor");
+            _spEffectArea = serializedObject.FindProperty("m_EffectArea");
+            _spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio");
+            _spDissolveWidth = serializedObject.FindProperty("m_DissolveWidth");
+            _spDissolveSoftness = serializedObject.FindProperty("m_DissolveSoftness");
+            _spDissolveColor = serializedObject.FindProperty("m_DissolveColor");
+            _spTransitionTexture = serializedObject.FindProperty("m_TransitionTexture");
+            var player = serializedObject.FindProperty("m_Player");
+            _spPlay = player.FindPropertyRelative("play");
+            _spDuration = player.FindPropertyRelative("duration");
+            _spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay");
+            _spLoop = player.FindPropertyRelative("loop");
+            _spLoopDelay = player.FindPropertyRelative("loopDelay");
+            _spUpdateMode = player.FindPropertyRelative("updateMode");
+            _spPassRayOnHidden = serializedObject.FindProperty("m_PassRayOnHidden");
 
-			s_NoiseTexId = Shader.PropertyToID("_NoiseTex");
+            s_NoiseTexId = Shader.PropertyToID("_NoiseTex");
 
-			_shader = Shader.Find("TextMeshPro/Distance Field (UITransition)");
-			_mobileShader = Shader.Find("TextMeshPro/Mobile/Distance Field (UITransition)");
-			_spriteShader = Shader.Find("TextMeshPro/Sprite (UITransition)");
-		}
+            _shader = Shader.Find("TextMeshPro/Distance Field (UITransition)");
+            _mobileShader = Shader.Find("TextMeshPro/Mobile/Distance Field (UITransition)");
+            _spriteShader = Shader.Find("TextMeshPro/Sprite (UITransition)");
+        }
 
 
-		/// <summary>
-		/// Implement this function to make a custom inspector.
-		/// </summary>
-		public override void OnInspectorGUI()
-		{
-			foreach (var d in targets.Cast<UITransitionEffect> ())
-			{
-				var mat = d.material;
-				if (d.isTMPro && mat && mat.HasProperty (s_NoiseTexId))
-				{
-					Texture noiseTexture = mat.GetTexture (s_NoiseTexId);
-					UITransitionEffect.EffectMode mode =
-						mat.IsKeywordEnabled ("CUTOFF") ? UITransitionEffect.EffectMode.Cutoff
-						: mat.IsKeywordEnabled ("FADE") ? UITransitionEffect.EffectMode.Fade
-						: mat.IsKeywordEnabled ("DISSOLVE") ? UITransitionEffect.EffectMode.Dissolve
-						: (UITransitionEffect.EffectMode)0;
+        /// <summary>
+        /// Implement this function to make a custom inspector.
+        /// </summary>
+        public override void OnInspectorGUI()
+        {
+            foreach (var d in targets.Cast<UITransitionEffect>())
+            {
+                var mat = d.material;
+                if (d.isTMPro && mat && mat.HasProperty(s_NoiseTexId))
+                {
+                    Texture noiseTexture = mat.GetTexture(s_NoiseTexId);
+                    UITransitionEffect.EffectMode mode =
+                        mat.IsKeywordEnabled("CUTOFF") ? UITransitionEffect.EffectMode.Cutoff
+                        : mat.IsKeywordEnabled("FADE") ? UITransitionEffect.EffectMode.Fade
+                        : mat.IsKeywordEnabled("DISSOLVE") ? UITransitionEffect.EffectMode.Dissolve
+                        : (UITransitionEffect.EffectMode)0;
 
-					if (mode == (UITransitionEffect.EffectMode)0)
-					{
-						mode = UITransitionEffect.EffectMode.Cutoff;
-						mat.EnableKeyword ("CUTOFF");
-					}
+                    if (mode == (UITransitionEffect.EffectMode)0)
+                    {
+                        mode = UITransitionEffect.EffectMode.Cutoff;
+                        mat.EnableKeyword("CUTOFF");
+                    }
 
-					bool hasChanged = d.transitionTexture != noiseTexture || d.effectMode != mode;
+                    bool hasChanged = d.transitionTexture != noiseTexture || d.effectMode != mode;
 
-					if (hasChanged)
-					{
-						var so = new SerializedObject (d);
-						so.FindProperty ("m_TransitionTexture").objectReferenceValue = noiseTexture;
-						so.FindProperty ("m_EffectMode").intValue = (int)mode;
-						so.ApplyModifiedProperties ();
-					}
-				}
-			}
+                    if (hasChanged)
+                    {
+                        var so = new SerializedObject(d);
+                        so.FindProperty("m_TransitionTexture").objectReferenceValue = noiseTexture;
+                        so.FindProperty("m_EffectMode").intValue = (int)mode;
+                        so.ApplyModifiedProperties();
+                    }
+                }
+            }
 
-			serializedObject.Update();
+            serializedObject.Update();
 
-			//================
-			// Effect material.
-			//================
-			EditorGUI.BeginDisabledGroup(true);
-			EditorGUILayout.PropertyField(_spMaterial);
-			EditorGUI.EndDisabledGroup();
+            //================
+            // Effect material.
+            //================
+            EditorGUI.BeginDisabledGroup(true);
+            EditorGUILayout.PropertyField(_spMaterial);
+            EditorGUI.EndDisabledGroup();
 
-			//================
-			// Effect setting.
-			//================
-			bool isAnyTMPro = targets.Cast<UITransitionEffect>().Any(x => x.isTMPro);
-			using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
-				EditorGUILayout.PropertyField(_spEffectMode);
+            //================
+            // Effect setting.
+            //================
+            bool isAnyTMPro = targets.Cast<UITransitionEffect>().Any(x => x.isTMPro);
+            using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
+                EditorGUILayout.PropertyField(_spEffectMode);
 
-			EditorGUI.indentLevel++;
-			EditorGUILayout.PropertyField(_spEffectFactor);
-			if (_spEffectMode.intValue == (int)UITransitionEffect.EffectMode.Dissolve)
-			{
-				EditorGUILayout.PropertyField(_spDissolveWidth);
-				EditorGUILayout.PropertyField(_spDissolveSoftness);
-				EditorGUILayout.PropertyField(_spDissolveColor);
-			}
-			EditorGUI.indentLevel--;
+            EditorGUI.indentLevel++;
+            EditorGUILayout.PropertyField(_spEffectFactor);
+            if (_spEffectMode.intValue == (int)UITransitionEffect.EffectMode.Dissolve)
+            {
+                EditorGUILayout.PropertyField(_spDissolveWidth);
+                EditorGUILayout.PropertyField(_spDissolveSoftness);
+                EditorGUILayout.PropertyField(_spDissolveColor);
+            }
+            EditorGUI.indentLevel--;
 
-			//================
-			// Advanced option.
-			//================
-			EditorGUILayout.PropertyField(_spEffectArea);
-			using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
-				EditorGUILayout.PropertyField(_spTransitionTexture);
-			EditorGUILayout.PropertyField(_spKeepAspectRatio);
-			EditorGUILayout.PropertyField(_spPassRayOnHidden);
+            //================
+            // Advanced option.
+            //================
+            EditorGUILayout.PropertyField(_spEffectArea);
+            using (new EditorGUI.DisabledGroupScope(isAnyTMPro))
+                EditorGUILayout.PropertyField(_spTransitionTexture);
+            EditorGUILayout.PropertyField(_spKeepAspectRatio);
+            EditorGUILayout.PropertyField(_spPassRayOnHidden);
 
-			//================
-			// Effect player.
-			//================
-			EditorGUILayout.PropertyField(_spPlay);
-			EditorGUILayout.PropertyField(_spDuration);
-			EditorGUILayout.PropertyField(_spInitialPlayDelay);
-			EditorGUILayout.PropertyField(_spLoop);
-			EditorGUILayout.PropertyField(_spLoopDelay);
-			EditorGUILayout.PropertyField(_spUpdateMode);
+            //================
+            // Effect player.
+            //================
+            EditorGUILayout.PropertyField(_spPlay);
+            EditorGUILayout.PropertyField(_spDuration);
+            EditorGUILayout.PropertyField(_spInitialPlayDelay);
+            EditorGUILayout.PropertyField(_spLoop);
+            EditorGUILayout.PropertyField(_spLoopDelay);
+            EditorGUILayout.PropertyField(_spUpdateMode);
 
-			// Debug.
-			using (new EditorGUI.DisabledGroupScope(!Application.isPlaying))
-			using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
-			{
-				GUILayout.Label("Debug");
+            // Debug.
+            using (new EditorGUI.DisabledGroupScope(!Application.isPlaying))
+            using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
+            {
+                GUILayout.Label("Debug");
 
-				if (GUILayout.Button("Show", "ButtonLeft"))
-				{
-					(target as UITransitionEffect).Show();
-				}
+                if (GUILayout.Button("Show", "ButtonLeft"))
+                {
+                    (target as UITransitionEffect).Show();
+                }
 
-				if (GUILayout.Button("Hide", "ButtonRight"))
-				{
-					(target as UITransitionEffect).Hide();
-				}
-			}
+                if (GUILayout.Button("Hide", "ButtonRight"))
+                {
+                    (target as UITransitionEffect).Hide();
+                }
+            }
 
-			var current = target as UITransitionEffect;
-			current.ShowTMProWarning(_shader, _mobileShader, _spriteShader, mat =>
-				{
-					if (mat.shader == _spriteShader)
-					{
-						mat.shaderKeywords = current.material.shaderKeywords;
-						mat.SetTexture(s_NoiseTexId, current.material.GetTexture(s_NoiseTexId));
-					}
-				});
-			ShowCanvasChannelsWarning();
+            var current = target as UITransitionEffect;
+            current.ShowTMProWarning(_shader, _mobileShader, _spriteShader, mat =>
+                {
+                    if (mat.shader == _spriteShader)
+                    {
+                        mat.shaderKeywords = current.material.shaderKeywords;
+                        mat.SetTexture(s_NoiseTexId, current.material.GetTexture(s_NoiseTexId));
+                    }
+                });
+            ShowCanvasChannelsWarning();
 
-			ShowMaterialEditors(current.materials, 1, current.materials.Length - 1);
+            ShowMaterialEditors(current.materials, 1, current.materials.Length - 1);
 
-			serializedObject.ApplyModifiedProperties();
-		}
+            serializedObject.ApplyModifiedProperties();
+        }
 
-		//################################
-		// Private Members.
-		//################################
-		SerializedProperty _spMaterial;
-		SerializedProperty _spEffectMode;
-		SerializedProperty _spEffectFactor;
-		SerializedProperty _spEffectArea;
-		SerializedProperty _spKeepAspectRatio;
-		SerializedProperty _spDissolveWidth;
-		SerializedProperty _spDissolveSoftness;
-		SerializedProperty _spDissolveColor;
-		SerializedProperty _spTransitionTexture;
-		SerializedProperty _spPlay;
-		SerializedProperty _spLoop;
-		SerializedProperty _spLoopDelay;
-		SerializedProperty _spDuration;
-		SerializedProperty _spInitialPlayDelay;
-		SerializedProperty _spUpdateMode;
-		SerializedProperty _spPassRayOnHidden;
+        //################################
+        // Private Members.
+        //################################
+        SerializedProperty _spMaterial;
+        SerializedProperty _spEffectMode;
+        SerializedProperty _spEffectFactor;
+        SerializedProperty _spEffectArea;
+        SerializedProperty _spKeepAspectRatio;
+        SerializedProperty _spDissolveWidth;
+        SerializedProperty _spDissolveSoftness;
+        SerializedProperty _spDissolveColor;
+        SerializedProperty _spTransitionTexture;
+        SerializedProperty _spPlay;
+        SerializedProperty _spLoop;
+        SerializedProperty _spLoopDelay;
+        SerializedProperty _spDuration;
+        SerializedProperty _spInitialPlayDelay;
+        SerializedProperty _spUpdateMode;
+        SerializedProperty _spPassRayOnHidden;
 
-		Shader _shader;
-		Shader _mobileShader;
-		Shader _spriteShader;
-	}
+        Shader _shader;
+        Shader _mobileShader;
+        Shader _spriteShader;
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIDissolve.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIDissolve.cs
index 983f40ea..0b395417 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIDissolve.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIDissolve.cs
@@ -1,432 +1,434 @@
 using System;
 using UnityEngine;
-using UnityEngine.UI;
 using UnityEngine.Serialization;
+using UnityEngine.UI;
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Dissolve effect for uGUI.
-	/// </summary>
-	[AddComponentMenu("UI/UIEffect/UIDissolve", 3)]
-	public class UIDissolve : UIEffectBase
-	{
-		//################################
-		// Constant or Static Members.
-		//################################
-		public const string shaderName = "UI/Hidden/UI-Effect-Dissolve";
-		static readonly ParameterTexture _ptex = new ParameterTexture(8, 128, "_ParamTex");
+    /// <summary>
+    /// Dissolve effect for uGUI.
+    /// </summary>
+    [AddComponentMenu("UI/UIEffect/UIDissolve", 3)]
+    public class UIDissolve : UIEffectBase
+    {
+        //################################
+        // Constant or Static Members.
+        //################################
+        public const string shaderName = "UI/Hidden/UI-Effect-Dissolve";
+        static readonly ParameterTexture _ptex = new ParameterTexture(8, 128, "_ParamTex");
 
 
-		//################################
-		// Serialize Members.
-		//################################
-		[Tooltip("Current location[0-1] for dissolve effect. 0 is not dissolved, 1 is completely dissolved.")]
-		[FormerlySerializedAs("m_Location")]
-		[SerializeField] [Range(0, 1)] float m_EffectFactor = 0.5f;
+        //################################
+        // Serialize Members.
+        //################################
+        [Tooltip("Current location[0-1] for dissolve effect. 0 is not dissolved, 1 is completely dissolved.")]
+        [FormerlySerializedAs("m_Location")]
+        [SerializeField][Range(0, 1)] float m_EffectFactor = 0.5f;
 
-		[Tooltip("Edge width.")]
-		[SerializeField] [Range(0, 1)] float m_Width = 0.5f;
+        [Tooltip("Edge width.")]
+        [SerializeField][Range(0, 1)] float m_Width = 0.5f;
 
-		[Tooltip("Edge softness.")]
-		[SerializeField] [Range(0, 1)] float m_Softness = 0.5f;
+        [Tooltip("Edge softness.")]
+        [SerializeField][Range(0, 1)] float m_Softness = 0.5f;
 
-		[Tooltip("Edge color.")]
-		[SerializeField] [ColorUsage(false)] Color m_Color = new Color(0.0f, 0.25f, 1.0f);
+        [Tooltip("Edge color.")]
+        [SerializeField][ColorUsage(false)] Color m_Color = new Color(0.0f, 0.25f, 1.0f);
 
-		[Tooltip("Edge color effect mode.")]
-		[SerializeField] ColorMode m_ColorMode = ColorMode.Add;
+        [Tooltip("Edge color effect mode.")]
+        [SerializeField] ColorMode m_ColorMode = ColorMode.Add;
 
-		[Tooltip("Noise texture for dissolving (single channel texture).")]
-		[SerializeField] Texture m_NoiseTexture;
+        [Tooltip("Noise texture for dissolving (single channel texture).")]
+        [SerializeField] Texture m_NoiseTexture;
 
-		[Header("Advanced Option")]
-		[Tooltip("The area for effect.")]
-		[SerializeField] protected EffectArea m_EffectArea;
+        [Header("Advanced Option")]
+        [Tooltip("The area for effect.")]
+        [SerializeField] protected EffectArea m_EffectArea;
 
-		[Tooltip("Keep effect aspect ratio.")]
-		[SerializeField] bool m_KeepAspectRatio;
+        [Tooltip("Keep effect aspect ratio.")]
+        [SerializeField] bool m_KeepAspectRatio;
 
-		[Header("Effect Player")]
-		[SerializeField] EffectPlayer m_Player;
+        [Header("Effect Player")]
+        [SerializeField] EffectPlayer m_Player;
 
-		[Tooltip("Reverse the dissolve effect.")]
-		[FormerlySerializedAs("m_ReverseAnimation")]
-		[SerializeField] bool m_Reverse = false;
+        [Tooltip("Reverse the dissolve effect.")]
+        [FormerlySerializedAs("m_ReverseAnimation")]
+        [SerializeField] bool m_Reverse = false;
 
-		#pragma warning disable 0414
-		[Obsolete][HideInInspector]
-		[SerializeField][Range(0.1f, 10)] float m_Duration = 1;
-		[Obsolete][HideInInspector]
-		[SerializeField] AnimatorUpdateMode m_UpdateMode = AnimatorUpdateMode.Normal;
-		#pragma warning restore 0414
+#pragma warning disable 0414
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField][Range(0.1f, 10)] float m_Duration = 1;
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField] AnimatorUpdateMode m_UpdateMode = AnimatorUpdateMode.Normal;
+#pragma warning restore 0414
 
 
-		//################################
-		// Public Members.
-		//################################
+        //################################
+        // Public Members.
+        //################################
 
-		/// <summary>
-		/// Effect factor between 0(start) and 1(end).
-		/// </summary>
-		[System.Obsolete("Use effectFactor instead (UnityUpgradable) -> effectFactor")]
-		public float location
-		{
-			get { return m_EffectFactor; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_EffectFactor, value))
-				{
-					m_EffectFactor = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Effect factor between 0(start) and 1(end).
+        /// </summary>
+        [System.Obsolete("Use effectFactor instead (UnityUpgradable) -> effectFactor")]
+        public float location
+        {
+            get { return m_EffectFactor; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_EffectFactor, value))
+                {
+                    m_EffectFactor = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Effect factor between 0(start) and 1(end).
-		/// </summary>
-		public float effectFactor
-		{
-			get { return m_EffectFactor; }
-			set
-			{ 
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_EffectFactor, value))
-				{
-					m_EffectFactor = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Effect factor between 0(start) and 1(end).
+        /// </summary>
+        public float effectFactor
+        {
+            get { return m_EffectFactor; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_EffectFactor, value))
+                {
+                    m_EffectFactor = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Edge width.
-		/// </summary>
-		public float width
-		{
-			get { return m_Width; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_Width, value))
-				{
-					m_Width = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Edge width.
+        /// </summary>
+        public float width
+        {
+            get { return m_Width; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_Width, value))
+                {
+                    m_Width = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Edge softness.
-		/// </summary>
-		public float softness
-		{
-			get { return m_Softness; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_Softness, value))
-				{
-					m_Softness = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Edge softness.
+        /// </summary>
+        public float softness
+        {
+            get { return m_Softness; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_Softness, value))
+                {
+                    m_Softness = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Edge color.
-		/// </summary>
-		public Color color
-		{
-			get { return m_Color; }
-			set
-			{
-				if (m_Color != value)
-				{
-					m_Color = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Edge color.
+        /// </summary>
+        public Color color
+        {
+            get { return m_Color; }
+            set
+            {
+                if (m_Color != value)
+                {
+                    m_Color = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Noise texture.
-		/// </summary>
-		public Texture noiseTexture
-		{
-			get { return m_NoiseTexture ?? material.GetTexture("_NoiseTex"); }
-			set
-			{
-				if (m_NoiseTexture != value)
-				{
-					m_NoiseTexture = value;
-					if (graphic)
-					{
-						ModifyMaterial();
-					}
-				}
-			}
-		}
+        /// <summary>
+        /// Noise texture.
+        /// </summary>
+        public Texture noiseTexture
+        {
+            get { return m_NoiseTexture ?? material.GetTexture("_NoiseTex"); }
+            set
+            {
+                if (m_NoiseTexture != value)
+                {
+                    m_NoiseTexture = value;
+                    if (graphic)
+                    {
+                        ModifyMaterial();
+                    }
+                }
+            }
+        }
 
-		/// <summary>
-		/// The area for effect.
-		/// </summary>
-		public EffectArea effectArea
-		{
-			get { return m_EffectArea; }
-			set
-			{
-				if (m_EffectArea != value)
-				{
-					m_EffectArea = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// The area for effect.
+        /// </summary>
+        public EffectArea effectArea
+        {
+            get { return m_EffectArea; }
+            set
+            {
+                if (m_EffectArea != value)
+                {
+                    m_EffectArea = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Keep aspect ratio.
-		/// </summary>
-		public bool keepAspectRatio
-		{
-			get { return m_KeepAspectRatio; }
-			set
-			{
-				if (m_KeepAspectRatio != value)
-				{
-					m_KeepAspectRatio = value;
-					SetVerticesDirty ();
-				}
-			}
-		}
+        /// <summary>
+        /// Keep aspect ratio.
+        /// </summary>
+        public bool keepAspectRatio
+        {
+            get { return m_KeepAspectRatio; }
+            set
+            {
+                if (m_KeepAspectRatio != value)
+                {
+                    m_KeepAspectRatio = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Color effect mode.
-		/// </summary>
-		public ColorMode colorMode { get { return m_ColorMode; } }
+        /// <summary>
+        /// Color effect mode.
+        /// </summary>
+        public ColorMode colorMode { get { return m_ColorMode; } }
 
-		/// <summary>
-		/// Play effect on enable.
-		/// </summary>
-		[System.Obsolete("Use Play/Stop method instead")]
-		public bool play { get { return _player.play; } set { _player.play = value; } }
+        /// <summary>
+        /// Play effect on enable.
+        /// </summary>
+        [System.Obsolete("Use Play/Stop method instead")]
+        public bool play { get { return _player.play; } set { _player.play = value; } }
 
-		/// <summary>
-		/// Play effect loop.
-		/// </summary>
-		[System.Obsolete]
-		public bool loop { get { return _player.loop; } set { _player.loop = value; } }
+        /// <summary>
+        /// Play effect loop.
+        /// </summary>
+        [System.Obsolete]
+        public bool loop { get { return _player.loop; } set { _player.loop = value; } }
 
-		/// <summary>
-		/// The duration for playing effect.
-		/// </summary>
-		public float duration { get { return _player.duration; } set { _player.duration = Mathf.Max(value, 0.1f); } }
+        /// <summary>
+        /// The duration for playing effect.
+        /// </summary>
+        public float duration { get { return _player.duration; } set { _player.duration = Mathf.Max(value, 0.1f); } }
 
-		/// <summary>
-		/// Delay on loop effect.
-		/// </summary>
-		[System.Obsolete]
-		public float loopDelay { get { return _player.loopDelay; } set { _player.loopDelay = Mathf.Max(value, 0); } }
+        /// <summary>
+        /// Delay on loop effect.
+        /// </summary>
+        [System.Obsolete]
+        public float loopDelay { get { return _player.loopDelay; } set { _player.loopDelay = Mathf.Max(value, 0); } }
 
-		/// <summary>
-		/// Update mode for playing effect.
-		/// </summary>
-		public AnimatorUpdateMode updateMode { get { return _player.updateMode; } set { _player.updateMode = value; } }
+        /// <summary>
+        /// Update mode for playing effect.
+        /// </summary>
+        public AnimatorUpdateMode updateMode { get { return _player.updateMode; } set { _player.updateMode = value; } }
 
-		/// <summary>
-		/// Reverse the dissolve effect.
-		/// </summary>
-		public bool reverse { get { return m_Reverse; } set { m_Reverse = value; } }
+        /// <summary>
+        /// Reverse the dissolve effect.
+        /// </summary>
+        public bool reverse { get { return m_Reverse; } set { m_Reverse = value; } }
 
-		/// <summary>
-		/// Gets the parameter texture.
-		/// </summary>
-		public override ParameterTexture ptex { get { return _ptex; } }
+        /// <summary>
+        /// Gets the parameter texture.
+        /// </summary>
+        public override ParameterTexture ptex { get { return _ptex; } }
 
-		/// <summary>
-		/// Modifies the material.
-		/// </summary>
-		public override void ModifyMaterial()
-		{
-			if (isTMPro)
-			{
-				return;
-			}
+        /// <summary>
+        /// Modifies the material.
+        /// </summary>
+        public override void ModifyMaterial()
+        {
+            if (isTMPro)
+            {
+                return;
+            }
 
-			ulong hash = (m_NoiseTexture ? (uint)m_NoiseTexture.GetInstanceID() : 0) + ((ulong)1 << 32) + ((ulong)m_ColorMode << 36);
-			if (_materialCache != null && (_materialCache.hash != hash || !isActiveAndEnabled || !m_EffectMaterial))
-			{
-				MaterialCache.Unregister(_materialCache);
-				_materialCache = null;
-			}
+            ulong hash = (m_NoiseTexture ? (uint)m_NoiseTexture.GetInstanceID() : 0) + ((ulong)1 << 32) + ((ulong)m_ColorMode << 36);
+            if (_materialCache != null && (_materialCache.hash != hash || !isActiveAndEnabled || !m_EffectMaterial))
+            {
+                MaterialCache.Unregister(_materialCache);
+                _materialCache = null;
+            }
 
-			if (!isActiveAndEnabled || !m_EffectMaterial)
-			{
-				material = null;
-			}
-			else if (!m_NoiseTexture)
-			{
-				material = m_EffectMaterial;
-			}
-			else if (_materialCache != null && _materialCache.hash == hash)
-			{
-				material = _materialCache.material;
-			}
-			else
-			{
-				_materialCache = MaterialCache.Register(hash, m_NoiseTexture, () =>
-					{
-						var mat = new Material(m_EffectMaterial);
-						mat.name += "_" + m_NoiseTexture.name;
-						mat.SetTexture("_NoiseTex", m_NoiseTexture);
-						return mat;
-					});
-				material = _materialCache.material;
-			}
-		}
+            if (!isActiveAndEnabled || !m_EffectMaterial)
+            {
+                material = null;
+            }
+            else if (!m_NoiseTexture)
+            {
+                material = m_EffectMaterial;
+            }
+            else if (_materialCache != null && _materialCache.hash == hash)
+            {
+                material = _materialCache.material;
+            }
+            else
+            {
+                _materialCache = MaterialCache.Register(hash, m_NoiseTexture, () =>
+                    {
+                        var mat = new Material(m_EffectMaterial);
+                        mat.name += "_" + m_NoiseTexture.name;
+                        mat.SetTexture("_NoiseTex", m_NoiseTexture);
+                        return mat;
+                    });
+                material = _materialCache.material;
+            }
+        }
 
-		/// <summary>
-		/// Modifies the mesh.
-		/// </summary>
-		public override void ModifyMesh(VertexHelper vh)
-		{
-			if (!isActiveAndEnabled)
-				return;
+        /// <summary>
+        /// Modifies the mesh.
+        /// </summary>
+        public override void ModifyMesh(VertexHelper vh)
+        {
+            if (!isActiveAndEnabled)
+                return;
 
-			bool isText = isTMPro || graphic is Text;
-			float normalizedIndex = ptex.GetNormalizedIndex(this);
+            bool isText = isTMPro || graphic is Text;
+            float normalizedIndex = ptex.GetNormalizedIndex(this);
 
-			// rect.
-			var tex = noiseTexture;
-			var aspectRatio = m_KeepAspectRatio && tex ? ((float)tex.width) / tex.height : -1;
-			Rect rect = m_EffectArea.GetEffectArea(vh, rectTransform.rect, aspectRatio);
+            // rect.
+            var tex = noiseTexture;
+            var aspectRatio = m_KeepAspectRatio && tex ? ((float)tex.width) / tex.height : -1;
+            Rect rect = m_EffectArea.GetEffectArea(vh, rectTransform.rect, aspectRatio);
 
-			// Calculate vertex position.
-			UIVertex vertex = default(UIVertex);
-			float x, y;
-			int count = vh.currentVertCount;
-			for (int i = 0; i < count; i++)
-			{
-				vh.PopulateUIVertex(ref vertex, i);
-				m_EffectArea.GetPositionFactor (i, rect, vertex.position, isText, isTMPro, out x, out y);
+            // Calculate vertex position.
+            UIVertex vertex = default(UIVertex);
+            float x, y;
+            int count = vh.currentVertCount;
+            for (int i = 0; i < count; i++)
+            {
+                vh.PopulateUIVertex(ref vertex, i);
+                m_EffectArea.GetPositionFactor(i, rect, vertex.position, isText, isTMPro, out x, out y);
 
-				vertex.uv0 = new Vector2(
-					Packer.ToFloat(vertex.uv0.x, vertex.uv0.y),
-					Packer.ToFloat(x, y, normalizedIndex)
-				);
-//				if(!isTMPro)
-//				{
-//					vertex.uv0 = new Vector2(
-//						Packer.ToFloat(vertex.uv0.x, vertex.uv0.y),
-//						Packer.ToFloat(x, y, normalizedIndex)
-//					);
-//				}
-//				#if UNITY_5_6_OR_NEWER
-//				else
-//				{
-//					vertex.uv2 = new Vector2 (
-//						Packer.ToFloat (x, y, normalizedIndex),
-//						0
-//					);
-//				}
-//				#endif
+                vertex.uv0 = new Vector2(
+                    Packer.ToFloat(vertex.uv0.x, vertex.uv0.y),
+                    Packer.ToFloat(x, y, normalizedIndex)
+                );
+                //				if(!isTMPro)
+                //				{
+                //					vertex.uv0 = new Vector2(
+                //						Packer.ToFloat(vertex.uv0.x, vertex.uv0.y),
+                //						Packer.ToFloat(x, y, normalizedIndex)
+                //					);
+                //				}
+                //				#if UNITY_5_6_OR_NEWER
+                //				else
+                //				{
+                //					vertex.uv2 = new Vector2 (
+                //						Packer.ToFloat (x, y, normalizedIndex),
+                //						0
+                //					);
+                //				}
+                //				#endif
 
-				vh.SetUIVertex(vertex, i);
-			}
-		}
+                vh.SetUIVertex(vertex, i);
+            }
+        }
 
-		protected override void SetDirty()
-		{
-			foreach(var m in materials)
-			{
-				ptex.RegisterMaterial (m);
-			}
-			ptex.SetData(this, 0, m_EffectFactor);	// param1.x : location
-			ptex.SetData(this, 1, m_Width);		// param1.y : width
-			ptex.SetData(this, 2, m_Softness);	// param1.z : softness
-			ptex.SetData(this, 4, m_Color.r);	// param2.x : red
-			ptex.SetData(this, 5, m_Color.g);	// param2.y : green
-			ptex.SetData(this, 6, m_Color.b);	// param2.z : blue
-		}
+        protected override void SetDirty()
+        {
+            foreach (var m in materials)
+            {
+                ptex.RegisterMaterial(m);
+            }
+            ptex.SetData(this, 0, m_EffectFactor);  // param1.x : location
+            ptex.SetData(this, 1, m_Width);     // param1.y : width
+            ptex.SetData(this, 2, m_Softness);  // param1.z : softness
+            ptex.SetData(this, 4, m_Color.r);   // param2.x : red
+            ptex.SetData(this, 5, m_Color.g);   // param2.y : green
+            ptex.SetData(this, 6, m_Color.b);   // param2.z : blue
+        }
 
-		/// <summary>
-		/// Play effect.
-		/// </summary>
-		public void Play(bool reset = true)
-		{
-			_player.Play(reset);
-		}
+        /// <summary>
+        /// Play effect.
+        /// </summary>
+        public void Play(bool reset = true)
+        {
+            _player.Play(reset);
+        }
 
-		/// <summary>
-		/// Stop effect.
-		/// </summary>
-		public void Stop(bool reset = true)
-		{
-			_player.Stop(reset);
-		}
+        /// <summary>
+        /// Stop effect.
+        /// </summary>
+        public void Stop(bool reset = true)
+        {
+            _player.Stop(reset);
+        }
 
-		//################################
-		// Protected Members.
-		//################################
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable();
+        //################################
+        // Protected Members.
+        //################################
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
 
-			_player.OnEnable((f) =>
-			{
-				effectFactor = m_Reverse ? 1f - f : f;
-			});
-		}
+            _player.OnEnable((f) =>
+            {
+                effectFactor = m_Reverse ? 1f - f : f;
+            });
+        }
 
-		protected override void OnDisable()
-		{
-			base.OnDisable ();
-			MaterialCache.Unregister(_materialCache);
-			_materialCache = null;
-			_player.OnDisable();
-		}
+        protected override void OnDisable()
+        {
+            base.OnDisable();
+            MaterialCache.Unregister(_materialCache);
+            _materialCache = null;
+            _player.OnDisable();
+        }
 
 #if UNITY_EDITOR
-		/// <summary>
-		/// Gets the material.
-		/// </summary>
-		/// <returns>The material.</returns>
-		protected override Material GetMaterial()
-		{
-			if (isTMPro)
-			{
-				return null;
-			}
+        /// <summary>
+        /// Gets the material.
+        /// </summary>
+        /// <returns>The material.</returns>
+        protected override Material GetMaterial()
+        {
+            if (isTMPro)
+            {
+                return null;
+            }
 
-			return MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_ColorMode);
-		}
+            return MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_ColorMode);
+        }
 
-		#pragma warning disable 0612
-		protected override void UpgradeIfNeeded()
-		{
-			// Upgrade for v3.0.0
-			if (IsShouldUpgrade(300))
-			{
-				_player.play = false;
-				_player.duration = m_Duration;
-				_player.loop = false;
-				_player.loopDelay = 1;
-				_player.updateMode = m_UpdateMode;
-			}
-		}
-		#pragma warning restore 0612
+#pragma warning disable 0612
+        protected override void UpgradeIfNeeded()
+        {
+            // Upgrade for v3.0.0
+            if (IsShouldUpgrade(300))
+            {
+                _player.play = false;
+                _player.duration = m_Duration;
+                _player.loop = false;
+                _player.loopDelay = 1;
+                _player.updateMode = m_UpdateMode;
+            }
+        }
+#pragma warning restore 0612
 #endif
 
-		//################################
-		// Private Members.
-		//################################
-		MaterialCache _materialCache = null;
+        //################################
+        // Private Members.
+        //################################
+        MaterialCache _materialCache = null;
 
-		EffectPlayer _player{ get { return m_Player ?? (m_Player = new EffectPlayer()); } }
-	}
+        EffectPlayer _player { get { return m_Player ?? (m_Player = new EffectPlayer()); } }
+    }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIEffect.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIEffect.cs
index 69ff52dd..badda376 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIEffect.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIEffect.cs
@@ -5,484 +5,490 @@ using UnityEngine.UI;
 using UnityEngine.Serialization;
 
 #if UNITY_EDITOR
-using System.IO;
 using System.Linq;
 using UnityEditor;
 #endif
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// UIEffect.
-	/// </summary>
-	[ExecuteInEditMode]
-	[RequireComponent(typeof(Graphic))]
-	[DisallowMultipleComponent]
-	[AddComponentMenu("UI/UIEffect/UIEffect", 1)]
-	public class UIEffect : UIEffectBase
-	{
-		//################################
-		// Constant or Static Members.
-		//################################
-		public const string shaderName = "UI/Hidden/UI-Effect";
-		static readonly ParameterTexture _ptex = new ParameterTexture(4, 1024, "_ParamTex");
+    /// <summary>
+    /// UIEffect.
+    /// </summary>
+    [ExecuteInEditMode]
+    [RequireComponent(typeof(Graphic))]
+    [DisallowMultipleComponent]
+    [AddComponentMenu("UI/UIEffect/UIEffect", 1)]
+    public class UIEffect : UIEffectBase
+    {
+        //################################
+        // Constant or Static Members.
+        //################################
+        public const string shaderName = "UI/Hidden/UI-Effect";
+        static readonly ParameterTexture _ptex = new ParameterTexture(4, 1024, "_ParamTex");
 
 
-		//################################
-		// Serialize Members.
-		//################################
-		[FormerlySerializedAs("m_ToneLevel")]
-		[Tooltip("Effect factor between 0(no effect) and 1(complete effect).")]
-		[SerializeField][Range(0, 1)] float m_EffectFactor = 1;
+        //################################
+        // Serialize Members.
+        //################################
+        [FormerlySerializedAs("m_ToneLevel")]
+        [Tooltip("Effect factor between 0(no effect) and 1(complete effect).")]
+        [SerializeField][Range(0, 1)] float m_EffectFactor = 1;
 
-		[Tooltip("Color effect factor between 0(no effect) and 1(complete effect).")]
-		[SerializeField][Range(0, 1)] float m_ColorFactor = 1;
+        [Tooltip("Color effect factor between 0(no effect) and 1(complete effect).")]
+        [SerializeField][Range(0, 1)] float m_ColorFactor = 1;
 
-		[FormerlySerializedAs("m_Blur")]
-		[Tooltip("How far is the blurring from the graphic.")]
-		[SerializeField][Range(0, 1)] float m_BlurFactor = 1;
+        [FormerlySerializedAs("m_Blur")]
+        [Tooltip("How far is the blurring from the graphic.")]
+        [SerializeField][Range(0, 1)] float m_BlurFactor = 1;
 
-		[FormerlySerializedAs("m_ToneMode")]
-		[Tooltip("Effect mode")]
-		[SerializeField] EffectMode m_EffectMode = EffectMode.None;
+        [FormerlySerializedAs("m_ToneMode")]
+        [Tooltip("Effect mode")]
+        [SerializeField] EffectMode m_EffectMode = EffectMode.None;
 
-		[Tooltip("Color effect mode")]
-		[SerializeField] ColorMode m_ColorMode = ColorMode.Multiply;
+        [Tooltip("Color effect mode")]
+        [SerializeField] ColorMode m_ColorMode = ColorMode.Multiply;
 
-		[Tooltip("Blur effect mode")]
-		[SerializeField] BlurMode m_BlurMode = BlurMode.None;
+        [Tooltip("Blur effect mode")]
+        [SerializeField] BlurMode m_BlurMode = BlurMode.None;
 
-		[Tooltip("Advanced blurring remove common artifacts in the blur effect for uGUI.")]
-		[SerializeField] bool m_AdvancedBlur = false;
+        [Tooltip("Advanced blurring remove common artifacts in the blur effect for uGUI.")]
+        [SerializeField] bool m_AdvancedBlur = false;
 
-		#pragma warning disable 0414
-		[Obsolete][HideInInspector]
-		[SerializeField][Range(0, 1)] float m_ShadowBlur = 1;
-		[Obsolete][HideInInspector]
-		[SerializeField] ShadowStyle m_ShadowStyle;
-		[Obsolete][HideInInspector]
-		[SerializeField] Color m_ShadowColor = Color.black;
-		[Obsolete][HideInInspector]
-		[SerializeField] Vector2 m_EffectDistance = new Vector2(1f, -1f);
-		[Obsolete][HideInInspector]
-		[SerializeField] bool m_UseGraphicAlpha = true;
-		[Obsolete][HideInInspector]
-		[SerializeField] Color m_EffectColor = Color.white;
-		[Obsolete][HideInInspector]
-		[SerializeField] List<UIShadow.AdditionalShadow> m_AdditionalShadows = new List<UIShadow.AdditionalShadow>();
-		#pragma warning restore 0414
+#pragma warning disable 0414
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField][Range(0, 1)] float m_ShadowBlur = 1;
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField] ShadowStyle m_ShadowStyle;
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField] Color m_ShadowColor = Color.black;
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField] Vector2 m_EffectDistance = new Vector2(1f, -1f);
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField] bool m_UseGraphicAlpha = true;
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField] Color m_EffectColor = Color.white;
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField] List<UIShadow.AdditionalShadow> m_AdditionalShadows = new List<UIShadow.AdditionalShadow>();
+#pragma warning restore 0414
 
-		public enum BlurEx
-		{
-			None = 0,
-			Ex = 1,
-		}
+        public enum BlurEx
+        {
+            None = 0,
+            Ex = 1,
+        }
 
-		//################################
-		// Public Members.
-		//################################
+        //################################
+        // Public Members.
+        //################################
 #if UNITY_2017_1_OR_NEWER
-		public override AdditionalCanvasShaderChannels requiredChannels
-		{
-			get
-			{
-				if (advancedBlur)
-				{
-					return isTMPro
-						? AdditionalCanvasShaderChannels.TexCoord1 | AdditionalCanvasShaderChannels.TexCoord2
-						: AdditionalCanvasShaderChannels.TexCoord1;
-				}
-				return AdditionalCanvasShaderChannels.None;
-			}
-		}
+        public override AdditionalCanvasShaderChannels requiredChannels
+        {
+            get
+            {
+                if (advancedBlur)
+                {
+                    return isTMPro
+                        ? AdditionalCanvasShaderChannels.TexCoord1 | AdditionalCanvasShaderChannels.TexCoord2
+                        : AdditionalCanvasShaderChannels.TexCoord1;
+                }
+                return AdditionalCanvasShaderChannels.None;
+            }
+        }
 #endif
 
-		/// <summary>
-		/// Effect factor between 0(no effect) and 1(complete effect).
-		/// </summary>
-		[System.Obsolete("Use effectFactor instead (UnityUpgradable) -> effectFactor")]
-		public float toneLevel
-		{
-			get { return m_EffectFactor; }
-			set
-			{
-				m_EffectFactor = Mathf.Clamp(value, 0, 1);
-				SetDirty();
-			}
-		}
+        /// <summary>
+        /// Effect factor between 0(no effect) and 1(complete effect).
+        /// </summary>
+        [System.Obsolete("Use effectFactor instead (UnityUpgradable) -> effectFactor")]
+        public float toneLevel
+        {
+            get { return m_EffectFactor; }
+            set
+            {
+                m_EffectFactor = Mathf.Clamp(value, 0, 1);
+                SetDirty();
+            }
+        }
 
-		/// <summary>
-		/// Effect factor between 0(no effect) and 1(complete effect).
-		/// </summary>
-		public float effectFactor
-		{
-			get { return m_EffectFactor; }
-			set
-			{
-				m_EffectFactor = Mathf.Clamp(value, 0, 1);
-				SetDirty();
-			}
-		}
+        /// <summary>
+        /// Effect factor between 0(no effect) and 1(complete effect).
+        /// </summary>
+        public float effectFactor
+        {
+            get { return m_EffectFactor; }
+            set
+            {
+                m_EffectFactor = Mathf.Clamp(value, 0, 1);
+                SetDirty();
+            }
+        }
 
-		/// <summary>
-		/// Color effect factor between 0(no effect) and 1(complete effect).
-		/// </summary>
-		public float colorFactor
-		{
-			get { return m_ColorFactor; }
-			set
-			{
-				m_ColorFactor = Mathf.Clamp(value, 0, 1);
-				SetDirty();
-			}
-		}
+        /// <summary>
+        /// Color effect factor between 0(no effect) and 1(complete effect).
+        /// </summary>
+        public float colorFactor
+        {
+            get { return m_ColorFactor; }
+            set
+            {
+                m_ColorFactor = Mathf.Clamp(value, 0, 1);
+                SetDirty();
+            }
+        }
 
-		/// <summary>
-		/// How far is the blurring from the graphic.
-		/// </summary>
-		[System.Obsolete("Use blurFactor instead (UnityUpgradable) -> blurFactor")]
-		public float blur
-		{
-			get { return m_BlurFactor; }
-			set
-			{
-				m_BlurFactor = Mathf.Clamp(value, 0, 1);
-				SetDirty();
-			}
-		}
+        /// <summary>
+        /// How far is the blurring from the graphic.
+        /// </summary>
+        [System.Obsolete("Use blurFactor instead (UnityUpgradable) -> blurFactor")]
+        public float blur
+        {
+            get { return m_BlurFactor; }
+            set
+            {
+                m_BlurFactor = Mathf.Clamp(value, 0, 1);
+                SetDirty();
+            }
+        }
 
-		/// <summary>
-		/// How far is the blurring from the graphic.
-		/// </summary>
-		[System.Obsolete("Use effectFactor instead (UnityUpgradable) -> effectFactor")]
-		public float blurFactor
-		{
-			get { return m_BlurFactor; }
-			set
-			{
-				m_BlurFactor = Mathf.Clamp(value, 0, 1);
-				SetDirty();
-			}
-		}
+        /// <summary>
+        /// How far is the blurring from the graphic.
+        /// </summary>
+        [System.Obsolete("Use effectFactor instead (UnityUpgradable) -> effectFactor")]
+        public float blurFactor
+        {
+            get { return m_BlurFactor; }
+            set
+            {
+                m_BlurFactor = Mathf.Clamp(value, 0, 1);
+                SetDirty();
+            }
+        }
 
-		/// <summary>
-		/// Effect mode(readonly).
-		/// </summary>
-		[System.Obsolete("Use effectMode instead (UnityUpgradable) -> effectMode")]
-		public EffectMode toneMode { get { return m_EffectMode; } }
+        /// <summary>
+        /// Effect mode(readonly).
+        /// </summary>
+        [System.Obsolete("Use effectMode instead (UnityUpgradable) -> effectMode")]
+        public EffectMode toneMode { get { return m_EffectMode; } }
 
-		/// <summary>
-		/// Effect mode(readonly).
-		/// </summary>
-		public EffectMode effectMode { get { return m_EffectMode; } }
+        /// <summary>
+        /// Effect mode(readonly).
+        /// </summary>
+        public EffectMode effectMode { get { return m_EffectMode; } }
 
-		/// <summary>
-		/// Color effect mode(readonly).
-		/// </summary>
-		public ColorMode colorMode { get { return m_ColorMode; } }
+        /// <summary>
+        /// Color effect mode(readonly).
+        /// </summary>
+        public ColorMode colorMode { get { return m_ColorMode; } }
 
-		/// <summary>
-		/// Blur effect mode(readonly).
-		/// </summary>
-		public BlurMode blurMode { get { return m_BlurMode; } }
+        /// <summary>
+        /// Blur effect mode(readonly).
+        /// </summary>
+        public BlurMode blurMode { get { return m_BlurMode; } }
 
-		/// <summary>
-		/// Color for the color effect.
-		/// </summary>
-		public Color effectColor
-		{
-			get { return graphic.color; }
-			set
-			{
-				graphic.color = value;
-				SetDirty();
-			}
-		}
+        /// <summary>
+        /// Color for the color effect.
+        /// </summary>
+        public Color effectColor
+        {
+            get { return graphic.color; }
+            set
+            {
+                graphic.color = value;
+                SetDirty();
+            }
+        }
 
-		/// <summary>
-		/// Gets the parameter texture.
-		/// </summary>
-		public override ParameterTexture ptex { get { return _ptex; } }
+        /// <summary>
+        /// Gets the parameter texture.
+        /// </summary>
+        public override ParameterTexture ptex { get { return _ptex; } }
 
-		/// <summary>
-		/// Advanced blurring remove common artifacts in the blur effect for uGUI.
-		/// </summary>
-		public bool advancedBlur { get { return isTMPro ? (material && material.IsKeywordEnabled("EX")) : m_AdvancedBlur; } }
+        /// <summary>
+        /// Advanced blurring remove common artifacts in the blur effect for uGUI.
+        /// </summary>
+        public bool advancedBlur { get { return isTMPro ? (material && material.IsKeywordEnabled("EX")) : m_AdvancedBlur; } }
 
-		/// <summary>
-		/// Modifies the mesh.
-		/// </summary>
-		public override void ModifyMesh(VertexHelper vh)
-		{
-			if (!isActiveAndEnabled)
-			{
-				return;
-			}
+        /// <summary>
+        /// Modifies the mesh.
+        /// </summary>
+        public override void ModifyMesh(VertexHelper vh)
+        {
+            if (!isActiveAndEnabled)
+            {
+                return;
+            }
 
-			float normalizedIndex = ptex.GetNormalizedIndex(this);
+            float normalizedIndex = ptex.GetNormalizedIndex(this);
 
-			if (m_BlurMode != BlurMode.None && advancedBlur)
-			{
-				vh.GetUIVertexStream(tempVerts);
-				vh.Clear();
-				var count = tempVerts.Count;
+            if (m_BlurMode != BlurMode.None && advancedBlur)
+            {
+                vh.GetUIVertexStream(tempVerts);
+                vh.Clear();
+                var count = tempVerts.Count;
 
-				// Bundle
-				int bundleSize = (targetGraphic is Text || isTMPro) ? 6 : count;
-				Rect posBounds = default(Rect);
-				Rect uvBounds = default(Rect);
-				Vector3 size = default(Vector3);
-				Vector3 tPos = default(Vector3);
-				Vector3 tUV = default(Vector3);
-				float expand = (float)blurMode * 6 * 2;
+                // Bundle
+                int bundleSize = (targetGraphic is Text || isTMPro) ? 6 : count;
+                Rect posBounds = default(Rect);
+                Rect uvBounds = default(Rect);
+                Vector3 size = default(Vector3);
+                Vector3 tPos = default(Vector3);
+                Vector3 tUV = default(Vector3);
+                float expand = (float)blurMode * 6 * 2;
 
-				for (int i = 0; i < count; i += bundleSize)
-				{
-					// min/max for bundled-quad
-					GetBounds(tempVerts, i, bundleSize, ref posBounds, ref uvBounds, true);
+                for (int i = 0; i < count; i += bundleSize)
+                {
+                    // min/max for bundled-quad
+                    GetBounds(tempVerts, i, bundleSize, ref posBounds, ref uvBounds, true);
 
-					// Pack uv mask.
-					Vector2 uvMask = new Vector2(Packer.ToFloat(uvBounds.xMin, uvBounds.yMin), Packer.ToFloat(uvBounds.xMax, uvBounds.yMax));
+                    // Pack uv mask.
+                    Vector2 uvMask = new Vector2(Packer.ToFloat(uvBounds.xMin, uvBounds.yMin), Packer.ToFloat(uvBounds.xMax, uvBounds.yMax));
 
-					// Quad
-					for (int j = 0; j < bundleSize; j += 6)
-					{
-						Vector3 cornerPos1 = tempVerts[i + j + 1].position;
-						Vector3 cornerPos2 = tempVerts[i + j + 4].position;
+                    // Quad
+                    for (int j = 0; j < bundleSize; j += 6)
+                    {
+                        Vector3 cornerPos1 = tempVerts[i + j + 1].position;
+                        Vector3 cornerPos2 = tempVerts[i + j + 4].position;
 
-						// Is outer quad?
-						bool hasOuterEdge = (bundleSize == 6)
-						                    || !posBounds.Contains(cornerPos1)
-						                    || !posBounds.Contains(cornerPos2);
-						if (hasOuterEdge)
-						{
-							Vector3 cornerUv1 = tempVerts[i + j + 1].uv0;
-							Vector3 cornerUv2 = tempVerts[i + j + 4].uv0;
+                        // Is outer quad?
+                        bool hasOuterEdge = (bundleSize == 6)
+                                            || !posBounds.Contains(cornerPos1)
+                                            || !posBounds.Contains(cornerPos2);
+                        if (hasOuterEdge)
+                        {
+                            Vector3 cornerUv1 = tempVerts[i + j + 1].uv0;
+                            Vector3 cornerUv2 = tempVerts[i + j + 4].uv0;
 
-							Vector3 centerPos = (cornerPos1 + cornerPos2) / 2;
-							Vector3 centerUV = (cornerUv1 + cornerUv2) / 2;
-							size = (cornerPos1 - cornerPos2);
+                            Vector3 centerPos = (cornerPos1 + cornerPos2) / 2;
+                            Vector3 centerUV = (cornerUv1 + cornerUv2) / 2;
+                            size = (cornerPos1 - cornerPos2);
 
-							size.x = 1 + expand / Mathf.Abs(size.x);
-							size.y = 1 + expand / Mathf.Abs(size.y);
-							size.z = 1 + expand / Mathf.Abs(size.z);
+                            size.x = 1 + expand / Mathf.Abs(size.x);
+                            size.y = 1 + expand / Mathf.Abs(size.y);
+                            size.z = 1 + expand / Mathf.Abs(size.z);
 
-							tPos = centerPos - Vector3.Scale(size, centerPos);
-							tUV = centerUV - Vector3.Scale(size, centerUV);
-						}
+                            tPos = centerPos - Vector3.Scale(size, centerPos);
+                            tUV = centerUV - Vector3.Scale(size, centerUV);
+                        }
 
-						// Vertex
-						for (int k = 0; k < 6; k++)
-						{
-							UIVertex vt = tempVerts[i + j + k];
+                        // Vertex
+                        for (int k = 0; k < 6; k++)
+                        {
+                            UIVertex vt = tempVerts[i + j + k];
 
-							Vector3 pos = vt.position;
-							Vector2 uv0 = vt.uv0;
+                            Vector3 pos = vt.position;
+                            Vector2 uv0 = vt.uv0;
 
-							if (hasOuterEdge && (pos.x < posBounds.xMin || posBounds.xMax < pos.x))
-							{
-								pos.x = pos.x * size.x + tPos.x;
-								uv0.x = uv0.x * size.x + tUV.x;
-							}
-							if (hasOuterEdge && (pos.y < posBounds.yMin || posBounds.yMax < pos.y))
-							{
-								pos.y = pos.y * size.y + tPos.y;
-								uv0.y = uv0.y * size.y + tUV.y;
-							}
+                            if (hasOuterEdge && (pos.x < posBounds.xMin || posBounds.xMax < pos.x))
+                            {
+                                pos.x = pos.x * size.x + tPos.x;
+                                uv0.x = uv0.x * size.x + tUV.x;
+                            }
+                            if (hasOuterEdge && (pos.y < posBounds.yMin || posBounds.yMax < pos.y))
+                            {
+                                pos.y = pos.y * size.y + tPos.y;
+                                uv0.y = uv0.y * size.y + tUV.y;
+                            }
 
-							vt.uv0 = new Vector2(Packer.ToFloat((uv0.x + 0.5f) / 2f, (uv0.y + 0.5f) / 2f), normalizedIndex);
-							vt.position = pos;
+                            vt.uv0 = new Vector2(Packer.ToFloat((uv0.x + 0.5f) / 2f, (uv0.y + 0.5f) / 2f), normalizedIndex);
+                            vt.position = pos;
 
-							if (isTMPro)
-							{
-								#if UNITY_2017_1_OR_NEWER
-								vt.uv2 = uvMask;
-								#endif
-							}
-							else
-							{
-								vt.uv1 = uvMask;
-							}
+                            if (isTMPro)
+                            {
+#if UNITY_2017_1_OR_NEWER
+                                vt.uv2 = uvMask;
+#endif
+                            }
+                            else
+                            {
+                                vt.uv1 = uvMask;
+                            }
 
-							tempVerts[i + j + k] = vt;
-						}
-					}
-				}
+                            tempVerts[i + j + k] = vt;
+                        }
+                    }
+                }
 
-				vh.AddUIVertexTriangleStream(tempVerts);
-				tempVerts.Clear();
-			}
-			else
-			{
-				int count = vh.currentVertCount;
-				UIVertex vt = default(UIVertex);
-				for (int i = 0; i < count; i++)
-				{
-					vh.PopulateUIVertex(ref vt, i);
-					Vector2 uv0 = vt.uv0;
-					vt.uv0 = new Vector2(
-						Packer.ToFloat((uv0.x + 0.5f) / 2f, (uv0.y + 0.5f) / 2f),
-						normalizedIndex
-					);
-					vh.SetUIVertex(vt, i);
-				}
-			}
-		}
+                vh.AddUIVertexTriangleStream(tempVerts);
+                tempVerts.Clear();
+            }
+            else
+            {
+                int count = vh.currentVertCount;
+                UIVertex vt = default(UIVertex);
+                for (int i = 0; i < count; i++)
+                {
+                    vh.PopulateUIVertex(ref vt, i);
+                    Vector2 uv0 = vt.uv0;
+                    vt.uv0 = new Vector2(
+                        Packer.ToFloat((uv0.x + 0.5f) / 2f, (uv0.y + 0.5f) / 2f),
+                        normalizedIndex
+                    );
+                    vh.SetUIVertex(vt, i);
+                }
+            }
+        }
 
-		protected override void SetDirty()
-		{
-			foreach (var m in materials)
-			{
-				ptex.RegisterMaterial (m);
-			}
-			ptex.SetData(this, 0, m_EffectFactor);	// param.x : effect factor
-			ptex.SetData(this, 1, m_ColorFactor);	// param.y : color factor
-			ptex.SetData(this, 2, m_BlurFactor);	// param.z : blur factor
-		}
+        protected override void SetDirty()
+        {
+            foreach (var m in materials)
+            {
+                ptex.RegisterMaterial(m);
+            }
+            ptex.SetData(this, 0, m_EffectFactor);  // param.x : effect factor
+            ptex.SetData(this, 1, m_ColorFactor);   // param.y : color factor
+            ptex.SetData(this, 2, m_BlurFactor);    // param.z : blur factor
+        }
 
 #if UNITY_EDITOR
-		/// <summary>
-		/// Gets the material.
-		/// </summary>
-		/// <returns>The material.</returns>
-		protected override Material GetMaterial()
-		{
-			if (isTMPro)
-			{
-				return null;
-			}
-			return MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_EffectMode, m_ColorMode, m_BlurMode, m_AdvancedBlur ? BlurEx.Ex : BlurEx.None);
-		}
+        /// <summary>
+        /// Gets the material.
+        /// </summary>
+        /// <returns>The material.</returns>
+        protected override Material GetMaterial()
+        {
+            if (isTMPro)
+            {
+                return null;
+            }
+            return MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_EffectMode, m_ColorMode, m_BlurMode, m_AdvancedBlur ? BlurEx.Ex : BlurEx.None);
+        }
 
-		#pragma warning disable 0612
-		protected override void UpgradeIfNeeded()
-		{
-			// Upgrade for v3.0.0
-			if (IsShouldUpgrade(300))
-			{
-				if (m_ColorMode != ColorMode.Multiply)
-				{
-					Color col = targetGraphic.color;
-					col.r = m_EffectColor.r;
-					col.g = m_EffectColor.g;
-					col.b = m_EffectColor.b;
-					targetGraphic.color = col;
-					m_ColorFactor = m_EffectColor.a;
-				}
+#pragma warning disable 0612
+        protected override void UpgradeIfNeeded()
+        {
+            // Upgrade for v3.0.0
+            if (IsShouldUpgrade(300))
+            {
+                if (m_ColorMode != ColorMode.Multiply)
+                {
+                    Color col = targetGraphic.color;
+                    col.r = m_EffectColor.r;
+                    col.g = m_EffectColor.g;
+                    col.b = m_EffectColor.b;
+                    targetGraphic.color = col;
+                    m_ColorFactor = m_EffectColor.a;
+                }
 
-				if (m_ShadowStyle != ShadowStyle.None || m_AdditionalShadows.Any(x => x.style != ShadowStyle.None))
-				{
-					if (m_ShadowStyle != ShadowStyle.None)
-					{
-						var shadow = gameObject.GetComponent<UIShadow>() ?? gameObject.AddComponent<UIShadow>();
-						shadow.style = m_ShadowStyle;
-						shadow.effectDistance = m_EffectDistance;
-						shadow.effectColor = m_ShadowColor;
-						shadow.useGraphicAlpha = m_UseGraphicAlpha;
-						shadow.blurFactor = m_ShadowBlur;
-					}
+                if (m_ShadowStyle != ShadowStyle.None || m_AdditionalShadows.Any(x => x.style != ShadowStyle.None))
+                {
+                    if (m_ShadowStyle != ShadowStyle.None)
+                    {
+                        var shadow = gameObject.GetComponent<UIShadow>() ?? gameObject.AddComponent<UIShadow>();
+                        shadow.style = m_ShadowStyle;
+                        shadow.effectDistance = m_EffectDistance;
+                        shadow.effectColor = m_ShadowColor;
+                        shadow.useGraphicAlpha = m_UseGraphicAlpha;
+                        shadow.blurFactor = m_ShadowBlur;
+                    }
 
-					foreach (var s in m_AdditionalShadows)
-					{
-						if (s.style == ShadowStyle.None)
-						{
-							continue;
-						}
+                    foreach (var s in m_AdditionalShadows)
+                    {
+                        if (s.style == ShadowStyle.None)
+                        {
+                            continue;
+                        }
 
-						var shadow = gameObject.AddComponent<UIShadow>();
-						shadow.style = s.style;
-						shadow.effectDistance = s.effectDistance;
-						shadow.effectColor = s.effectColor;
-						shadow.useGraphicAlpha = s.useGraphicAlpha;
-						shadow.blurFactor = s.blur;
-					}
+                        var shadow = gameObject.AddComponent<UIShadow>();
+                        shadow.style = s.style;
+                        shadow.effectDistance = s.effectDistance;
+                        shadow.effectColor = s.effectColor;
+                        shadow.useGraphicAlpha = s.useGraphicAlpha;
+                        shadow.blurFactor = s.blur;
+                    }
 
-					m_ShadowStyle = ShadowStyle.None;
-					m_AdditionalShadows = null;
+                    m_ShadowStyle = ShadowStyle.None;
+                    m_AdditionalShadows = null;
 
-					if (m_EffectMode == EffectMode.None && m_ColorMode == ColorMode.Multiply && m_BlurMode == BlurMode.None)
-					{
-						DestroyImmediate(this, true);
-					}
-				}
+                    if (m_EffectMode == EffectMode.None && m_ColorMode == ColorMode.Multiply && m_BlurMode == BlurMode.None)
+                    {
+                        DestroyImmediate(this, true);
+                    }
+                }
 
-				int tone = (int)m_EffectMode;
-				const int Mono = 5;
-				const int Cutoff = 6;
-				const int Hue = 7;
-				if (tone == Hue)
-				{
-					var go = gameObject;
-					var hue = m_EffectFactor;
-					DestroyImmediate(this, true);
-					var hsv = go.GetComponent<UIHsvModifier>() ?? go.AddComponent<UIHsvModifier>();
-					hsv.hue = hue;
-					hsv.range = 1;
-				}
+                int tone = (int)m_EffectMode;
+                const int Mono = 5;
+                const int Cutoff = 6;
+                const int Hue = 7;
+                if (tone == Hue)
+                {
+                    var go = gameObject;
+                    var hue = m_EffectFactor;
+                    DestroyImmediate(this, true);
+                    var hsv = go.GetComponent<UIHsvModifier>() ?? go.AddComponent<UIHsvModifier>();
+                    hsv.hue = hue;
+                    hsv.range = 1;
+                }
 
-				// Cutoff/Mono
-				if (tone == Cutoff || tone == Mono)
-				{
-					var go = gameObject;
-					var factor = m_EffectFactor;
-					var transitionMode = tone == Cutoff
-						? UITransitionEffect.EffectMode.Cutoff
-						: UITransitionEffect.EffectMode.Fade;
-					DestroyImmediate(this, true);
-					var trans = go.GetComponent<UITransitionEffect>() ?? go.AddComponent<UITransitionEffect>();
-					trans.effectFactor = factor;
+                // Cutoff/Mono
+                if (tone == Cutoff || tone == Mono)
+                {
+                    var go = gameObject;
+                    var factor = m_EffectFactor;
+                    var transitionMode = tone == Cutoff
+                        ? UITransitionEffect.EffectMode.Cutoff
+                        : UITransitionEffect.EffectMode.Fade;
+                    DestroyImmediate(this, true);
+                    var trans = go.GetComponent<UITransitionEffect>() ?? go.AddComponent<UITransitionEffect>();
+                    trans.effectFactor = factor;
 
-					var sp = new SerializedObject(trans).FindProperty("m_EffectMode");
-					sp.intValue = (int)transitionMode;
-					sp.serializedObject.ApplyModifiedProperties();
-				}
-			}
-		}
-		#pragma warning restore 0612
+                    var sp = new SerializedObject(trans).FindProperty("m_EffectMode");
+                    sp.intValue = (int)transitionMode;
+                    sp.serializedObject.ApplyModifiedProperties();
+                }
+            }
+        }
+#pragma warning restore 0612
 #endif
 
-		//################################
-		// Private Members.
-		//################################
-		static void GetBounds(List<UIVertex> verts, int start, int count, ref Rect posBounds, ref Rect uvBounds, bool global)
-		{
-			Vector2 minPos = new Vector2(float.MaxValue, float.MaxValue);
-			Vector2 maxPos = new Vector2(float.MinValue, float.MinValue);
-			Vector2 minUV = new Vector2(float.MaxValue, float.MaxValue);
-			Vector2 maxUV = new Vector2(float.MinValue, float.MinValue);
-			for (int i = start; i < start + count; i++)
-			{
-				UIVertex vt = verts[i];
+        //################################
+        // Private Members.
+        //################################
+        static void GetBounds(List<UIVertex> verts, int start, int count, ref Rect posBounds, ref Rect uvBounds, bool global)
+        {
+            Vector2 minPos = new Vector2(float.MaxValue, float.MaxValue);
+            Vector2 maxPos = new Vector2(float.MinValue, float.MinValue);
+            Vector2 minUV = new Vector2(float.MaxValue, float.MaxValue);
+            Vector2 maxUV = new Vector2(float.MinValue, float.MinValue);
+            for (int i = start; i < start + count; i++)
+            {
+                UIVertex vt = verts[i];
 
-				Vector2 uv = vt.uv0;
-				Vector3 pos = vt.position;
+                Vector2 uv = vt.uv0;
+                Vector3 pos = vt.position;
 
-				// Left-Bottom
-				if (minPos.x >= pos.x && minPos.y >= pos.y)
-				{
-					minPos = pos;
-				}
-				// Right-Top
-				else if (maxPos.x <= pos.x && maxPos.y <= pos.y)
-				{
-					maxPos = pos;
-				}
+                // Left-Bottom
+                if (minPos.x >= pos.x && minPos.y >= pos.y)
+                {
+                    minPos = pos;
+                }
+                // Right-Top
+                else if (maxPos.x <= pos.x && maxPos.y <= pos.y)
+                {
+                    maxPos = pos;
+                }
 
-				// Left-Bottom
-				if (minUV.x >= uv.x && minUV.y >= uv.y)
-				{
-					minUV = uv;
-				}
-				// Right-Top
-				else if (maxUV.x <= uv.x && maxUV.y <= uv.y)
-				{
-					maxUV = uv;
-				}
-			}
+                // Left-Bottom
+                if (minUV.x >= uv.x && minUV.y >= uv.y)
+                {
+                    minUV = uv;
+                }
+                // Right-Top
+                else if (maxUV.x <= uv.x && maxUV.y <= uv.y)
+                {
+                    maxUV = uv;
+                }
+            }
 
-			// Shrink coordinate for detect edge
-			posBounds.Set(minPos.x + 0.001f, minPos.y + 0.001f, maxPos.x - minPos.x - 0.002f, maxPos.y - minPos.y - 0.002f);
-			uvBounds.Set(minUV.x, minUV.y, maxUV.x - minUV.x, maxUV.y - minUV.y);
-		}
-	}
+            // Shrink coordinate for detect edge
+            posBounds.Set(minPos.x + 0.001f, minPos.y + 0.001f, maxPos.x - minPos.x - 0.002f, maxPos.y - minPos.y - 0.002f);
+            uvBounds.Set(minUV.x, minUV.y, maxUV.x - minUV.x, maxUV.y - minUV.y);
+        }
+    }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIEffectCapturedImage.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIEffectCapturedImage.cs
index bbaac106..aa204f27 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIEffectCapturedImage.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIEffectCapturedImage.cs
@@ -1,552 +1,552 @@
 using System.Collections;
 using System.Linq;
 using UnityEngine;
-using UnityEngine.Serialization;
 using UnityEngine.Rendering;
+using UnityEngine.Serialization;
 using UnityEngine.UI;
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// UIEffectCapturedImage
-	/// </summary>
-	[AddComponentMenu("UI/UIEffect/UIEffectCapturedImage", 200)]
-	public class UIEffectCapturedImage : RawImage
+    /// <summary>
+    /// UIEffectCapturedImage
+    /// </summary>
+    [AddComponentMenu("UI/UIEffect/UIEffectCapturedImage", 200)]
+    public class UIEffectCapturedImage : RawImage
 #if UNITY_EDITOR
-		, ISerializationCallbackReceiver
+        , ISerializationCallbackReceiver
 #endif
-	{
+    {
 
-		//################################
-		// Constant or Static Members.
-		//################################
-		public const string shaderName = "UI/Hidden/UI-EffectCapture";
+        //################################
+        // Constant or Static Members.
+        //################################
+        public const string shaderName = "UI/Hidden/UI-EffectCapture";
 
-		/// <summary>
-		/// Desampling rate.
-		/// </summary>
-		public enum DesamplingRate
-		{
-			None = 0,
-			x1 = 1,
-			x2 = 2,
-			x4 = 4,
-			x8 = 8,
-		}
+        /// <summary>
+        /// Desampling rate.
+        /// </summary>
+        public enum DesamplingRate
+        {
+            None = 0,
+            x1 = 1,
+            x2 = 2,
+            x4 = 4,
+            x8 = 8,
+        }
 
 
-		//################################
-		// Serialize Members.
-		//################################
-		[Tooltip("Effect factor between 0(no effect) and 1(complete effect).")]
-		[FormerlySerializedAs("m_ToneLevel")]
-		[SerializeField][Range(0, 1)] float m_EffectFactor = 1;
+        //################################
+        // Serialize Members.
+        //################################
+        [Tooltip("Effect factor between 0(no effect) and 1(complete effect).")]
+        [FormerlySerializedAs("m_ToneLevel")]
+        [SerializeField][Range(0, 1)] float m_EffectFactor = 1;
 
-		[Tooltip("Color effect factor between 0(no effect) and 1(complete effect).")]
-		[SerializeField][Range(0, 1)] float m_ColorFactor = 1;
+        [Tooltip("Color effect factor between 0(no effect) and 1(complete effect).")]
+        [SerializeField][Range(0, 1)] float m_ColorFactor = 1;
 
-		[Tooltip("How far is the blurring from the graphic.")]
-		[FormerlySerializedAs("m_Blur")]
-		[SerializeField][Range(0, 1)] float m_BlurFactor = 1;
+        [Tooltip("How far is the blurring from the graphic.")]
+        [FormerlySerializedAs("m_Blur")]
+        [SerializeField][Range(0, 1)] float m_BlurFactor = 1;
 
-		[Tooltip("Effect mode.")]
-		[FormerlySerializedAs("m_ToneMode")]
-		[SerializeField] EffectMode m_EffectMode = EffectMode.None;
+        [Tooltip("Effect mode.")]
+        [FormerlySerializedAs("m_ToneMode")]
+        [SerializeField] EffectMode m_EffectMode = EffectMode.None;
 
-		[Tooltip("Color effect mode.")]
-		[SerializeField] ColorMode m_ColorMode = ColorMode.Multiply;
+        [Tooltip("Color effect mode.")]
+        [SerializeField] ColorMode m_ColorMode = ColorMode.Multiply;
 
-		[Tooltip("Blur effect mode.")]
-		[SerializeField] BlurMode m_BlurMode = BlurMode.DetailBlur;
+        [Tooltip("Blur effect mode.")]
+        [SerializeField] BlurMode m_BlurMode = BlurMode.DetailBlur;
 
-		[Tooltip("Color for the color effect.")]
-		[SerializeField] Color m_EffectColor = Color.white;
+        [Tooltip("Color for the color effect.")]
+        [SerializeField] Color m_EffectColor = Color.white;
 
-		[Tooltip("Desampling rate of the generated RenderTexture.")]
-		[SerializeField] DesamplingRate m_DesamplingRate = DesamplingRate.x1;
+        [Tooltip("Desampling rate of the generated RenderTexture.")]
+        [SerializeField] DesamplingRate m_DesamplingRate = DesamplingRate.x1;
 
-		[Tooltip("Desampling rate of reduction buffer to apply effect.")]
-		[SerializeField] DesamplingRate m_ReductionRate = DesamplingRate.x1;
+        [Tooltip("Desampling rate of reduction buffer to apply effect.")]
+        [SerializeField] DesamplingRate m_ReductionRate = DesamplingRate.x1;
 
-		[Tooltip("FilterMode for capturing.")]
-		[SerializeField] FilterMode m_FilterMode = FilterMode.Bilinear;
+        [Tooltip("FilterMode for capturing.")]
+        [SerializeField] FilterMode m_FilterMode = FilterMode.Bilinear;
 
-		[Tooltip("Effect material.")]
-		[SerializeField] Material m_EffectMaterial = null;
+        [Tooltip("Effect material.")]
+        [SerializeField] Material m_EffectMaterial = null;
 
-		[Tooltip("Blur iterations.")]
-		[FormerlySerializedAs("m_Iterations")]
-		[SerializeField][Range(1, 8)] int m_BlurIterations = 3;
+        [Tooltip("Blur iterations.")]
+        [FormerlySerializedAs("m_Iterations")]
+        [SerializeField][Range(1, 8)] int m_BlurIterations = 3;
 
-		[Tooltip("Fits graphic size to screen on captured.")]
-		[FormerlySerializedAs("m_KeepCanvasSize")]
-		[SerializeField] bool m_FitToScreen = true;
+        [Tooltip("Fits graphic size to screen on captured.")]
+        [FormerlySerializedAs("m_KeepCanvasSize")]
+        [SerializeField] bool m_FitToScreen = true;
 
-		[Tooltip("Capture automatically on enable.")]
-		[SerializeField] bool m_CaptureOnEnable = false;
+        [Tooltip("Capture automatically on enable.")]
+        [SerializeField] bool m_CaptureOnEnable = false;
 
 
-		//################################
-		// Public Members.
-		//################################
-		/// <summary>
-		/// Effect factor between 0(no effect) and 1(complete effect).
-		/// </summary>
-		[System.Obsolete("Use effectFactor instead (UnityUpgradable) -> effectFactor")]
-		public float toneLevel { get { return m_EffectFactor; } set { m_EffectFactor = Mathf.Clamp(value, 0, 1); } }
+        //################################
+        // Public Members.
+        //################################
+        /// <summary>
+        /// Effect factor between 0(no effect) and 1(complete effect).
+        /// </summary>
+        [System.Obsolete("Use effectFactor instead (UnityUpgradable) -> effectFactor")]
+        public float toneLevel { get { return m_EffectFactor; } set { m_EffectFactor = Mathf.Clamp(value, 0, 1); } }
 
-		/// <summary>
-		/// Effect factor between 0(no effect) and 1(complete effect).
-		/// </summary>
-		public float effectFactor { get { return m_EffectFactor; } set { m_EffectFactor = Mathf.Clamp(value, 0, 1); } }
+        /// <summary>
+        /// Effect factor between 0(no effect) and 1(complete effect).
+        /// </summary>
+        public float effectFactor { get { return m_EffectFactor; } set { m_EffectFactor = Mathf.Clamp(value, 0, 1); } }
 
-		/// <summary>
-		/// Color effect factor between 0(no effect) and 1(complete effect).
-		/// </summary>
-		public float colorFactor { get { return m_ColorFactor; } set { m_ColorFactor = Mathf.Clamp(value, 0, 1); } }
+        /// <summary>
+        /// Color effect factor between 0(no effect) and 1(complete effect).
+        /// </summary>
+        public float colorFactor { get { return m_ColorFactor; } set { m_ColorFactor = Mathf.Clamp(value, 0, 1); } }
 
-		/// <summary>
-		/// How far is the blurring from the graphic.
-		/// </summary>
-		[System.Obsolete("Use blurFactor instead (UnityUpgradable) -> blurFactor")]
-		public float blur { get { return m_BlurFactor; } set { m_BlurFactor = Mathf.Clamp(value, 0, 4); } }
+        /// <summary>
+        /// How far is the blurring from the graphic.
+        /// </summary>
+        [System.Obsolete("Use blurFactor instead (UnityUpgradable) -> blurFactor")]
+        public float blur { get { return m_BlurFactor; } set { m_BlurFactor = Mathf.Clamp(value, 0, 4); } }
 
-		/// <summary>
-		/// How far is the blurring from the graphic.
-		/// </summary>
-		public float blurFactor { get { return m_BlurFactor; } set { m_BlurFactor = Mathf.Clamp(value, 0, 4); } }
+        /// <summary>
+        /// How far is the blurring from the graphic.
+        /// </summary>
+        public float blurFactor { get { return m_BlurFactor; } set { m_BlurFactor = Mathf.Clamp(value, 0, 4); } }
 
-		/// <summary>
-		/// Tone effect mode.
-		/// </summary>
-		[System.Obsolete("Use effectMode instead (UnityUpgradable) -> effectMode")]
-		public EffectMode toneMode { get { return m_EffectMode; } }
+        /// <summary>
+        /// Tone effect mode.
+        /// </summary>
+        [System.Obsolete("Use effectMode instead (UnityUpgradable) -> effectMode")]
+        public EffectMode toneMode { get { return m_EffectMode; } }
 
-		/// <summary>
-		/// Effect mode.
-		/// </summary>
-		public EffectMode effectMode { get { return m_EffectMode; } }
+        /// <summary>
+        /// Effect mode.
+        /// </summary>
+        public EffectMode effectMode { get { return m_EffectMode; } }
 
-		/// <summary>
-		/// Color effect mode.
-		/// </summary>
-		public ColorMode colorMode { get { return m_ColorMode; } }
+        /// <summary>
+        /// Color effect mode.
+        /// </summary>
+        public ColorMode colorMode { get { return m_ColorMode; } }
 
-		/// <summary>
-		/// Blur effect mode.
-		/// </summary>
-		public BlurMode blurMode { get { return m_BlurMode; } }
+        /// <summary>
+        /// Blur effect mode.
+        /// </summary>
+        public BlurMode blurMode { get { return m_BlurMode; } }
 
-		/// <summary>
-		/// Color for the color effect.
-		/// </summary>
-		public Color effectColor { get { return m_EffectColor; } set { m_EffectColor = value; } }
+        /// <summary>
+        /// Color for the color effect.
+        /// </summary>
+        public Color effectColor { get { return m_EffectColor; } set { m_EffectColor = value; } }
 
-		/// <summary>
-		/// Effect material.
-		/// </summary>
-		public virtual Material effectMaterial { get { return m_EffectMaterial; } }
+        /// <summary>
+        /// Effect material.
+        /// </summary>
+        public virtual Material effectMaterial { get { return m_EffectMaterial; } }
 
-		/// <summary>
-		/// Desampling rate of the generated RenderTexture.
-		/// </summary>
-		public DesamplingRate desamplingRate { get { return m_DesamplingRate; } set { m_DesamplingRate = value; } }
+        /// <summary>
+        /// Desampling rate of the generated RenderTexture.
+        /// </summary>
+        public DesamplingRate desamplingRate { get { return m_DesamplingRate; } set { m_DesamplingRate = value; } }
 
-		/// <summary>
-		/// Desampling rate of reduction buffer to apply effect.
-		/// </summary>
-		public DesamplingRate reductionRate { get { return m_ReductionRate; } set { m_ReductionRate = value; } }
+        /// <summary>
+        /// Desampling rate of reduction buffer to apply effect.
+        /// </summary>
+        public DesamplingRate reductionRate { get { return m_ReductionRate; } set { m_ReductionRate = value; } }
 
-		/// <summary>
-		/// FilterMode for capturing.
-		/// </summary>
-		public FilterMode filterMode { get { return m_FilterMode; } set { m_FilterMode = value; } }
+        /// <summary>
+        /// FilterMode for capturing.
+        /// </summary>
+        public FilterMode filterMode { get { return m_FilterMode; } set { m_FilterMode = value; } }
 
-		/// <summary>
-		/// Captured texture.
-		/// </summary>
-		public RenderTexture capturedTexture { get { return _rt; } }
+        /// <summary>
+        /// Captured texture.
+        /// </summary>
+        public RenderTexture capturedTexture { get { return _rt; } }
 
-		/// <summary>
-		/// Blur iterations.
-		/// </summary>
-		[System.Obsolete("Use blurIterations instead (UnityUpgradable) -> blurIterations")]
-		public int iterations { get { return m_BlurIterations; } set { m_BlurIterations = value; } }
+        /// <summary>
+        /// Blur iterations.
+        /// </summary>
+        [System.Obsolete("Use blurIterations instead (UnityUpgradable) -> blurIterations")]
+        public int iterations { get { return m_BlurIterations; } set { m_BlurIterations = value; } }
 
-		/// <summary>
-		/// Blur iterations.
-		/// </summary>
-		public int blurIterations { get { return m_BlurIterations; } set { m_BlurIterations = value; } }
+        /// <summary>
+        /// Blur iterations.
+        /// </summary>
+        public int blurIterations { get { return m_BlurIterations; } set { m_BlurIterations = value; } }
 
-		/// <summary>
-		/// Fits graphic size to screen.
-		/// </summary>
-		[System.Obsolete("Use fitToScreen instead (UnityUpgradable) -> fitToScreen")]
-		public bool keepCanvasSize { get { return m_FitToScreen; } set { m_FitToScreen = value; } }
+        /// <summary>
+        /// Fits graphic size to screen.
+        /// </summary>
+        [System.Obsolete("Use fitToScreen instead (UnityUpgradable) -> fitToScreen")]
+        public bool keepCanvasSize { get { return m_FitToScreen; } set { m_FitToScreen = value; } }
 
-		/// <summary>
-		/// Fits graphic size to screen on captured.
-		/// </summary>
-		public bool fitToScreen { get { return m_FitToScreen; } set { m_FitToScreen = value; } }
+        /// <summary>
+        /// Fits graphic size to screen on captured.
+        /// </summary>
+        public bool fitToScreen { get { return m_FitToScreen; } set { m_FitToScreen = value; } }
 
-		/// <summary>
-		/// Target RenderTexture to capture.
-		/// </summary>
-		[System.Obsolete]
-		public RenderTexture targetTexture { get { return null; } set { } }
+        /// <summary>
+        /// Target RenderTexture to capture.
+        /// </summary>
+        [System.Obsolete]
+        public RenderTexture targetTexture { get { return null; } set { } }
 
-		/// <summary>
-		/// Capture automatically on enable.
-		/// </summary>
-		public bool captureOnEnable { get { return m_CaptureOnEnable; } set { m_CaptureOnEnable = value; } }
+        /// <summary>
+        /// Capture automatically on enable.
+        /// </summary>
+        public bool captureOnEnable { get { return m_CaptureOnEnable; } set { m_CaptureOnEnable = value; } }
 
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable();
-			if (m_CaptureOnEnable && Application.isPlaying)
-			{
-				Capture();
-			}
-		}
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            if (m_CaptureOnEnable && Application.isPlaying)
+            {
+                Capture();
+            }
+        }
 
-		protected override void OnDisable()
-		{
-			base.OnDisable();
-			if (m_CaptureOnEnable && Application.isPlaying)
-			{
-				_Release(false);
-				texture = null;
-			}
-		}
+        protected override void OnDisable()
+        {
+            base.OnDisable();
+            if (m_CaptureOnEnable && Application.isPlaying)
+            {
+                _Release(false);
+                texture = null;
+            }
+        }
 
-		/// <summary>
-		/// This function is called when the MonoBehaviour will be destroyed.
-		/// </summary>
-		protected override void OnDestroy()
-		{
-			Release();
-			base.OnDestroy();
-		}
+        /// <summary>
+        /// This function is called when the MonoBehaviour will be destroyed.
+        /// </summary>
+        protected override void OnDestroy()
+        {
+            Release();
+            base.OnDestroy();
+        }
 
-		/// <summary>
-		/// Callback function when a UI element needs to generate vertices.
-		/// </summary>
-		protected override void OnPopulateMesh(VertexHelper vh)
-		{
-			// When not displaying, clear vertex.
-			if (texture == null || color.a < 1 / 255f || canvasRenderer.GetAlpha() < 1 / 255f)
-			{
-				vh.Clear();
-			}
-			else
-			{
-				base.OnPopulateMesh(vh);
-				int count = vh.currentVertCount;
-				UIVertex vt = default(UIVertex);
-				Color c = color;
-				for (int i = 0; i < count; i++)
-				{
-					vh.PopulateUIVertex(ref vt, i);
-					vt.color = c;
-					vh.SetUIVertex(vt, i);
-				}
-			}
-		}
+        /// <summary>
+        /// Callback function when a UI element needs to generate vertices.
+        /// </summary>
+        protected override void OnPopulateMesh(VertexHelper vh)
+        {
+            // When not displaying, clear vertex.
+            if (texture == null || color.a < 1 / 255f || canvasRenderer.GetAlpha() < 1 / 255f)
+            {
+                vh.Clear();
+            }
+            else
+            {
+                base.OnPopulateMesh(vh);
+                int count = vh.currentVertCount;
+                UIVertex vt = default(UIVertex);
+                Color c = color;
+                for (int i = 0; i < count; i++)
+                {
+                    vh.PopulateUIVertex(ref vt, i);
+                    vt.color = c;
+                    vh.SetUIVertex(vt, i);
+                }
+            }
+        }
 
-		/// <summary>
-		/// Gets the size of the desampling.
-		/// </summary>
-		public void GetDesamplingSize(DesamplingRate rate, out int w, out int h)
-		{
+        /// <summary>
+        /// Gets the size of the desampling.
+        /// </summary>
+        public void GetDesamplingSize(DesamplingRate rate, out int w, out int h)
+        {
 #if UNITY_EDITOR
-			if (!Application.isPlaying)
-			{
-				var res = UnityEditor.UnityStats.screenRes.Split('x');
-				w = int.Parse(res[0]);
-				h = int.Parse(res[1]);
-			}
-			else
+            if (!Application.isPlaying)
+            {
+                var res = UnityEditor.UnityStats.screenRes.Split('x');
+                w = int.Parse(res[0]);
+                h = int.Parse(res[1]);
+            }
+            else
 #endif
-			{
-				w = Screen.width;
-				h = Screen.height;
-			}
+            {
+                w = Screen.width;
+                h = Screen.height;
+            }
 
-			if (rate == DesamplingRate.None)
-				return;
+            if (rate == DesamplingRate.None)
+                return;
 
-			float aspect = (float)w / h;
-			if (w < h)
-			{
-				h = Mathf.ClosestPowerOfTwo(h / (int)rate);
-				w = Mathf.CeilToInt(h * aspect);
-			}
-			else
-			{
-				w = Mathf.ClosestPowerOfTwo(w / (int)rate);
-				h = Mathf.CeilToInt(w / aspect);
-			}
-		}
+            float aspect = (float)w / h;
+            if (w < h)
+            {
+                h = Mathf.ClosestPowerOfTwo(h / (int)rate);
+                w = Mathf.CeilToInt(h * aspect);
+            }
+            else
+            {
+                w = Mathf.ClosestPowerOfTwo(w / (int)rate);
+                h = Mathf.CeilToInt(w / aspect);
+            }
+        }
 
-		/// <summary>
-		/// Capture rendering result.
-		/// </summary>
-		public void Capture()
-		{
-			// Fit to screen.
-			var rootCanvas = canvas.rootCanvas;
-			if (m_FitToScreen)
-			{
-				var rootTransform = rootCanvas.transform as RectTransform;
-				var size = rootTransform.rect.size;
-				rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, size.x);
-				rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, size.y);
-				rectTransform.position = rootTransform.position;
-			}
+        /// <summary>
+        /// Capture rendering result.
+        /// </summary>
+        public void Capture()
+        {
+            // Fit to screen.
+            var rootCanvas = canvas.rootCanvas;
+            if (m_FitToScreen)
+            {
+                var rootTransform = rootCanvas.transform as RectTransform;
+                var size = rootTransform.rect.size;
+                rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, size.x);
+                rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, size.y);
+                rectTransform.position = rootTransform.position;
+            }
 
-			// Cache some ids.
-			if (s_CopyId == 0)
-			{
-				s_CopyId = Shader.PropertyToID("_UIEffectCapturedImage_ScreenCopyId");
-				s_EffectId1 = Shader.PropertyToID("_UIEffectCapturedImage_EffectId1");
-				s_EffectId2 = Shader.PropertyToID("_UIEffectCapturedImage_EffectId2");
+            // Cache some ids.
+            if (s_CopyId == 0)
+            {
+                s_CopyId = Shader.PropertyToID("_UIEffectCapturedImage_ScreenCopyId");
+                s_EffectId1 = Shader.PropertyToID("_UIEffectCapturedImage_EffectId1");
+                s_EffectId2 = Shader.PropertyToID("_UIEffectCapturedImage_EffectId2");
 
-				s_EffectFactorId = Shader.PropertyToID("_EffectFactor");
-				s_ColorFactorId = Shader.PropertyToID("_ColorFactor");
-				s_CommandBuffer = new CommandBuffer();
-			}
+                s_EffectFactorId = Shader.PropertyToID("_EffectFactor");
+                s_ColorFactorId = Shader.PropertyToID("_ColorFactor");
+                s_CommandBuffer = new CommandBuffer();
+            }
 
 
-			// If size of result RT has changed, release it.
-			int w, h;
-			GetDesamplingSize(m_DesamplingRate, out w, out h);
-			if (_rt && (_rt.width != w || _rt.height != h))
-			{
-				_Release(ref _rt);
-			}
+            // If size of result RT has changed, release it.
+            int w, h;
+            GetDesamplingSize(m_DesamplingRate, out w, out h);
+            if (_rt && (_rt.width != w || _rt.height != h))
+            {
+                _Release(ref _rt);
+            }
 
-			// Generate RT for result.
-			if (_rt == null)
-			{
-				_rt = RenderTexture.GetTemporary(w, h, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Default);
-				_rt.filterMode = m_FilterMode;
-				_rt.useMipMap = false;
-				_rt.wrapMode = TextureWrapMode.Clamp;
-				_rtId = new RenderTargetIdentifier(_rt);
-			}
-			SetupCommandBuffer();
-		}
+            // Generate RT for result.
+            if (_rt == null)
+            {
+                _rt = RenderTexture.GetTemporary(w, h, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Default);
+                _rt.filterMode = m_FilterMode;
+                _rt.useMipMap = false;
+                _rt.wrapMode = TextureWrapMode.Clamp;
+                _rtId = new RenderTargetIdentifier(_rt);
+            }
+            SetupCommandBuffer();
+        }
 
-		void SetupCommandBuffer()
-		{
-			// Material for effect.
-			Material mat = m_EffectMaterial;
+        void SetupCommandBuffer()
+        {
+            // Material for effect.
+            Material mat = m_EffectMaterial;
 
-			if (s_CommandBuffer == null)
-			{
-				s_CommandBuffer = new CommandBuffer();
-			}
+            if (s_CommandBuffer == null)
+            {
+                s_CommandBuffer = new CommandBuffer();
+            }
 
-			// [1] Capture from back buffer (back buffer -> copied screen).
-			int w, h;
-			GetDesamplingSize(DesamplingRate.None, out w, out h);
-			s_CommandBuffer.GetTemporaryRT(s_CopyId, w, h, 0, m_FilterMode);
+            // [1] Capture from back buffer (back buffer -> copied screen).
+            int w, h;
+            GetDesamplingSize(DesamplingRate.None, out w, out h);
+            s_CommandBuffer.GetTemporaryRT(s_CopyId, w, h, 0, m_FilterMode);
 #if UNITY_EDITOR
-			s_CommandBuffer.Blit(Resources.FindObjectsOfTypeAll<RenderTexture>().FirstOrDefault(x => x.name == "GameView RT"), s_CopyId);
+            s_CommandBuffer.Blit(Resources.FindObjectsOfTypeAll<RenderTexture>().FirstOrDefault(x => x.name == "GameView RT"), s_CopyId);
 #else
 			s_CommandBuffer.Blit(BuiltinRenderTextureType.BindableTexture, s_CopyId);
 #endif
 
-			// Set properties for effect.
-			s_CommandBuffer.SetGlobalVector(s_EffectFactorId, new Vector4(m_EffectFactor, 0));
-			s_CommandBuffer.SetGlobalVector(s_ColorFactorId, new Vector4(m_EffectColor.r, m_EffectColor.g, m_EffectColor.b, m_EffectColor.a));
+            // Set properties for effect.
+            s_CommandBuffer.SetGlobalVector(s_EffectFactorId, new Vector4(m_EffectFactor, 0));
+            s_CommandBuffer.SetGlobalVector(s_ColorFactorId, new Vector4(m_EffectColor.r, m_EffectColor.g, m_EffectColor.b, m_EffectColor.a));
 
-			// [2] Apply base effect with reduction buffer (copied screen -> effect1).
-			GetDesamplingSize(m_ReductionRate, out w, out h);
-			s_CommandBuffer.GetTemporaryRT(s_EffectId1, w, h, 0, m_FilterMode);
-			s_CommandBuffer.Blit(s_CopyId, s_EffectId1, mat, 0);
-			s_CommandBuffer.ReleaseTemporaryRT(s_CopyId);
+            // [2] Apply base effect with reduction buffer (copied screen -> effect1).
+            GetDesamplingSize(m_ReductionRate, out w, out h);
+            s_CommandBuffer.GetTemporaryRT(s_EffectId1, w, h, 0, m_FilterMode);
+            s_CommandBuffer.Blit(s_CopyId, s_EffectId1, mat, 0);
+            s_CommandBuffer.ReleaseTemporaryRT(s_CopyId);
 
-			// Iterate blurring operation.
-			if (m_BlurMode != BlurMode.None)
-			{
-				s_CommandBuffer.GetTemporaryRT(s_EffectId2, w, h, 0, m_FilterMode);
-				for (int i = 0; i < m_BlurIterations; i++)
-				{
-					// [3] Apply blurring with reduction buffer (effect1 -> effect2, or effect2 -> effect1).
-					s_CommandBuffer.SetGlobalVector(s_EffectFactorId, new Vector4(m_BlurFactor, 0));
-					s_CommandBuffer.Blit(s_EffectId1, s_EffectId2, mat, 1);
-					s_CommandBuffer.SetGlobalVector(s_EffectFactorId, new Vector4(0, m_BlurFactor));
-					s_CommandBuffer.Blit(s_EffectId2, s_EffectId1, mat, 1);
-				}
-				s_CommandBuffer.ReleaseTemporaryRT(s_EffectId2);
-			}
+            // Iterate blurring operation.
+            if (m_BlurMode != BlurMode.None)
+            {
+                s_CommandBuffer.GetTemporaryRT(s_EffectId2, w, h, 0, m_FilterMode);
+                for (int i = 0; i < m_BlurIterations; i++)
+                {
+                    // [3] Apply blurring with reduction buffer (effect1 -> effect2, or effect2 -> effect1).
+                    s_CommandBuffer.SetGlobalVector(s_EffectFactorId, new Vector4(m_BlurFactor, 0));
+                    s_CommandBuffer.Blit(s_EffectId1, s_EffectId2, mat, 1);
+                    s_CommandBuffer.SetGlobalVector(s_EffectFactorId, new Vector4(0, m_BlurFactor));
+                    s_CommandBuffer.Blit(s_EffectId2, s_EffectId1, mat, 1);
+                }
+                s_CommandBuffer.ReleaseTemporaryRT(s_EffectId2);
+            }
 
-			// [4] Copy to result RT.
-			s_CommandBuffer.Blit(s_EffectId1, _rtId);
-			s_CommandBuffer.ReleaseTemporaryRT(s_EffectId1);
+            // [4] Copy to result RT.
+            s_CommandBuffer.Blit(s_EffectId1, _rtId);
+            s_CommandBuffer.ReleaseTemporaryRT(s_EffectId1);
 
 #if UNITY_EDITOR
-			if (!Application.isPlaying)
-			{
-				Graphics.ExecuteCommandBuffer(s_CommandBuffer);
+            if (!Application.isPlaying)
+            {
+                Graphics.ExecuteCommandBuffer(s_CommandBuffer);
 
-				UpdateTexture();
-				return;
-			}
+                UpdateTexture();
+                return;
+            }
 #endif
-			// Execute command buffer.
-			canvas.rootCanvas.GetComponent<CanvasScaler> ().StartCoroutine (_CoUpdateTextureOnNextFrame ());
-		}
+            // Execute command buffer.
+            canvas.rootCanvas.GetComponent<CanvasScaler>().StartCoroutine(_CoUpdateTextureOnNextFrame());
+        }
 
-		/// <summary>
-		/// Release captured image.
-		/// </summary>
-		public void Release()
-		{
-			_Release(true);
-			texture = null;
-			_SetDirty();
-		}
+        /// <summary>
+        /// Release captured image.
+        /// </summary>
+        public void Release()
+        {
+            _Release(true);
+            texture = null;
+            _SetDirty();
+        }
 
 #if UNITY_EDITOR
-		protected override void Reset()
-		{
-			// Set parameters as 'Medium'.
-			m_BlurIterations = 3;
-			m_FilterMode = FilterMode.Bilinear;
-			m_DesamplingRate = DesamplingRate.x1;
-			m_ReductionRate = DesamplingRate.x1;
-			base.Reset();
-		}
+        protected override void Reset()
+        {
+            // Set parameters as 'Medium'.
+            m_BlurIterations = 3;
+            m_FilterMode = FilterMode.Bilinear;
+            m_DesamplingRate = DesamplingRate.x1;
+            m_ReductionRate = DesamplingRate.x1;
+            base.Reset();
+        }
 
-		/// <summary>
-		/// Raises the before serialize event.
-		/// </summary>
-		public void OnBeforeSerialize()
-		{
-		}
+        /// <summary>
+        /// Raises the before serialize event.
+        /// </summary>
+        public void OnBeforeSerialize()
+        {
+        }
 
-		/// <summary>
-		/// Raises the after deserialize event.
-		/// </summary>
-		public void OnAfterDeserialize()
-		{
-			UnityEditor.EditorApplication.delayCall += () => UpdateMaterial(true);
-		}
+        /// <summary>
+        /// Raises the after deserialize event.
+        /// </summary>
+        public void OnAfterDeserialize()
+        {
+            UnityEditor.EditorApplication.delayCall += () => UpdateMaterial(true);
+        }
 
-		/// <summary>
-		/// Raises the validate event.
-		/// </summary>
-		protected override void OnValidate()
-		{
-			base.OnValidate();
-			UnityEditor.EditorApplication.delayCall += () => UpdateMaterial(false);
-		}
+        /// <summary>
+        /// Raises the validate event.
+        /// </summary>
+        protected override void OnValidate()
+        {
+            base.OnValidate();
+            UnityEditor.EditorApplication.delayCall += () => UpdateMaterial(false);
+        }
 
-		/// <summary>
-		/// Updates the material.
-		/// </summary>
-		/// <param name="ignoreInPlayMode">If set to <c>true</c> ignore in play mode.</param>
-		protected void UpdateMaterial(bool ignoreInPlayMode)
-		{
-			if (!this || ignoreInPlayMode && Application.isPlaying)
-			{
-				return;
-			}
+        /// <summary>
+        /// Updates the material.
+        /// </summary>
+        /// <param name="ignoreInPlayMode">If set to <c>true</c> ignore in play mode.</param>
+        protected void UpdateMaterial(bool ignoreInPlayMode)
+        {
+            if (!this || ignoreInPlayMode && Application.isPlaying)
+            {
+                return;
+            }
 
-			var mat = MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_EffectMode, m_ColorMode, m_BlurMode);
-			if (m_EffectMaterial != mat)
-			{
-				material = null;
-				m_EffectMaterial = mat;
-				_SetDirty();
-			}
-		}
+            var mat = MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_EffectMode, m_ColorMode, m_BlurMode);
+            if (m_EffectMaterial != mat)
+            {
+                material = null;
+                m_EffectMaterial = mat;
+                _SetDirty();
+            }
+        }
 #endif
 
 
 
-		//################################
-		// Private Members.
-		//################################
-		RenderTexture _rt;
-		RenderTargetIdentifier _rtId;
+        //################################
+        // Private Members.
+        //################################
+        RenderTexture _rt;
+        RenderTargetIdentifier _rtId;
 
-		static int s_CopyId;
-		static int s_EffectId1;
-		static int s_EffectId2;
-		static int s_EffectFactorId;
-		static int s_ColorFactorId;
-		static CommandBuffer s_CommandBuffer;
+        static int s_CopyId;
+        static int s_EffectId1;
+        static int s_EffectId2;
+        static int s_EffectFactorId;
+        static int s_ColorFactorId;
+        static CommandBuffer s_CommandBuffer;
 
-		/// <summary>
-		/// Release genarated objects.
-		/// </summary>
-		/// <param name="releaseRT">If set to <c>true</c> release cached RenderTexture.</param>
-		void _Release(bool releaseRT)
-		{
-			if (releaseRT)
-			{
-				texture = null;
-				_Release(ref _rt);
-			}
+        /// <summary>
+        /// Release genarated objects.
+        /// </summary>
+        /// <param name="releaseRT">If set to <c>true</c> release cached RenderTexture.</param>
+        void _Release(bool releaseRT)
+        {
+            if (releaseRT)
+            {
+                texture = null;
+                _Release(ref _rt);
+            }
 
-			if (s_CommandBuffer != null)
-			{
-				s_CommandBuffer.Clear();
+            if (s_CommandBuffer != null)
+            {
+                s_CommandBuffer.Clear();
 
-				if (releaseRT)
-				{
-					s_CommandBuffer.Release();
-					s_CommandBuffer = null;
-				}
-			}
-		}
+                if (releaseRT)
+                {
+                    s_CommandBuffer.Release();
+                    s_CommandBuffer = null;
+                }
+            }
+        }
 
-		[System.Diagnostics.Conditional("UNITY_EDITOR")]
-		void _SetDirty()
-		{
+        [System.Diagnostics.Conditional("UNITY_EDITOR")]
+        void _SetDirty()
+        {
 #if UNITY_EDITOR
-			if (!Application.isPlaying)
-			{
-				UnityEditor.EditorUtility.SetDirty(this);
-			}
+            if (!Application.isPlaying)
+            {
+                UnityEditor.EditorUtility.SetDirty(this);
+            }
 #endif
-		}
+        }
 
-		void _Release(ref RenderTexture obj)
-		{
-			if (obj)
-			{
-				obj.Release();
-				RenderTexture.ReleaseTemporary (obj);
-				obj = null;
-			}
-		}
+        void _Release(ref RenderTexture obj)
+        {
+            if (obj)
+            {
+                obj.Release();
+                RenderTexture.ReleaseTemporary(obj);
+                obj = null;
+            }
+        }
 
-		/// <summary>
-		/// Set texture on next frame.
-		/// </summary>
-		IEnumerator _CoUpdateTextureOnNextFrame()
-		{
-			yield return new WaitForEndOfFrame();
-			UpdateTexture();
-		}
+        /// <summary>
+        /// Set texture on next frame.
+        /// </summary>
+        IEnumerator _CoUpdateTextureOnNextFrame()
+        {
+            yield return new WaitForEndOfFrame();
+            UpdateTexture();
+        }
 
-		void UpdateTexture()
-		{
+        void UpdateTexture()
+        {
 #if !UNITY_EDITOR
 			// Execute command buffer.
 			Graphics.ExecuteCommandBuffer (s_CommandBuffer);
 #endif
-			_Release(false);
-			texture = capturedTexture;
-			_SetDirty();
-		}
+            _Release(false);
+            texture = capturedTexture;
+            _SetDirty();
+        }
 
-	}
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIFlip.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIFlip.cs
index c97c0789..ca5643f8 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIFlip.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIFlip.cs
@@ -1,61 +1,59 @@
-using System;
-using System.Collections.Generic;
-using UnityEngine;
+using UnityEngine;
 using UnityEngine.UI;
 
 namespace Coffee.UIExtensions
 {
 
-	//[RequireComponent(typeof(Graphic))]
-	[DisallowMultipleComponent]
-	[AddComponentMenu("UI/MeshEffectForTextMeshPro/UIFlip", 102)]
-	public class UIFlip : BaseMeshEffect
-	{
-		//################################
-		// Serialize Members.
-		//################################
+    //[RequireComponent(typeof(Graphic))]
+    [DisallowMultipleComponent]
+    [AddComponentMenu("UI/MeshEffectForTextMeshPro/UIFlip", 102)]
+    public class UIFlip : BaseMeshEffect
+    {
+        //################################
+        // Serialize Members.
+        //################################
 
-		[Tooltip("Flip horizontally.")]
-		[SerializeField] private bool m_Horizontal = false;
+        [Tooltip("Flip horizontally.")]
+        [SerializeField] private bool m_Horizontal = false;
 
-		[Tooltip("Flip vertically.")]
-		[SerializeField] private bool m_Veritical = false;
+        [Tooltip("Flip vertically.")]
+        [SerializeField] private bool m_Veritical = false;
 
-		//################################
-		// Public Members.
-		//################################
-		/// <summary>
-		/// Gets or sets a value indicating whether this <see cref="Coffee.UIExtensions.UIFlip"/> should be flipped horizontally.
-		/// </summary>
-		/// <value><c>true</c> if be flipped horizontally; otherwise, <c>false</c>.</value>
-		public bool horizontal { get { return this.m_Horizontal; } set { this.m_Horizontal = value; SetVerticesDirty (); } }
+        //################################
+        // Public Members.
+        //################################
+        /// <summary>
+        /// Gets or sets a value indicating whether this <see cref="Coffee.UIExtensions.UIFlip"/> should be flipped horizontally.
+        /// </summary>
+        /// <value><c>true</c> if be flipped horizontally; otherwise, <c>false</c>.</value>
+        public bool horizontal { get { return this.m_Horizontal; } set { this.m_Horizontal = value; SetVerticesDirty(); } }
 
-		/// <summary>
-		/// Gets or sets a value indicating whether this <see cref="Coffee.UIExtensions.UIFlip"/> should be flipped vertically.
-		/// </summary>
-		/// <value><c>true</c> if be flipped horizontally; otherwise, <c>false</c>.</value>
-		public bool vertical { get { return this.m_Veritical; } set { this.m_Veritical = value; SetVerticesDirty (); } }
+        /// <summary>
+        /// Gets or sets a value indicating whether this <see cref="Coffee.UIExtensions.UIFlip"/> should be flipped vertically.
+        /// </summary>
+        /// <value><c>true</c> if be flipped horizontally; otherwise, <c>false</c>.</value>
+        public bool vertical { get { return this.m_Veritical; } set { this.m_Veritical = value; SetVerticesDirty(); } }
 
-		/// <summary>
-		/// Call used to modify mesh.
-		/// </summary>
-		/// <param name="vh">VertexHelper.</param>
-		public override void ModifyMesh(VertexHelper vh)
-		{
-			RectTransform rt = graphic.rectTransform;
-			UIVertex vt = default(UIVertex);
-			Vector3 pos;
-			Vector2 center = rt.rect.center;
-			for (int i = 0; i < vh.currentVertCount; i++)
-			{
-				vh.PopulateUIVertex(ref vt, i);
-				pos = vt.position;
-				vt.position = new Vector3(
-					m_Horizontal ? -pos.x : pos.x,
-					m_Veritical ? -pos.y : pos.y
-				);
-				vh.SetUIVertex(vt, i);
-			}
-		}
-	}
+        /// <summary>
+        /// Call used to modify mesh.
+        /// </summary>
+        /// <param name="vh">VertexHelper.</param>
+        public override void ModifyMesh(VertexHelper vh)
+        {
+            RectTransform rt = graphic.rectTransform;
+            UIVertex vt = default(UIVertex);
+            Vector3 pos;
+            Vector2 center = rt.rect.center;
+            for (int i = 0; i < vh.currentVertCount; i++)
+            {
+                vh.PopulateUIVertex(ref vt, i);
+                pos = vt.position;
+                vt.position = new Vector3(
+                    m_Horizontal ? -pos.x : pos.x,
+                    m_Veritical ? -pos.y : pos.y
+                );
+                vh.SetUIVertex(vt, i);
+            }
+        }
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIGradient.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIGradient.cs
index 23f820eb..ff9409a2 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIGradient.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIGradient.cs
@@ -3,384 +3,384 @@ using UnityEngine.UI;
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// UIGradient.
-	/// </summary>
-	[DisallowMultipleComponent]
-	[AddComponentMenu("UI/MeshEffectForTextMeshPro/UIGradient", 101)]
-	public class UIGradient : BaseMeshEffect
-	{
-		//################################
-		// Constant or Static Members.
-		//################################
+    /// <summary>
+    /// UIGradient.
+    /// </summary>
+    [DisallowMultipleComponent]
+    [AddComponentMenu("UI/MeshEffectForTextMeshPro/UIGradient", 101)]
+    public class UIGradient : BaseMeshEffect
+    {
+        //################################
+        // Constant or Static Members.
+        //################################
 
-		/// <summary>
-		/// Gradient direction.
-		/// </summary>
-		public enum Direction
-		{
-			Horizontal,
-			Vertical,
-			Angle,
-			Diagonal,
-		}
+        /// <summary>
+        /// Gradient direction.
+        /// </summary>
+        public enum Direction
+        {
+            Horizontal,
+            Vertical,
+            Angle,
+            Diagonal,
+        }
 
-		/// <summary>
-		/// Gradient space for Text.
-		/// </summary>
-		public enum GradientStyle
-		{
-			Rect,
-			Fit,
-			Split,
-		}
+        /// <summary>
+        /// Gradient space for Text.
+        /// </summary>
+        public enum GradientStyle
+        {
+            Rect,
+            Fit,
+            Split,
+        }
 
 
-		//################################
-		// Serialize Members.
-		//################################
+        //################################
+        // Serialize Members.
+        //################################
 
-		[Tooltip("Gradient Direction.")]
-		[SerializeField] Direction m_Direction;
+        [Tooltip("Gradient Direction.")]
+        [SerializeField] Direction m_Direction;
 
-		[Tooltip("Color1: Top or Left.")]
-		[SerializeField] Color m_Color1 = Color.white;
+        [Tooltip("Color1: Top or Left.")]
+        [SerializeField] Color m_Color1 = Color.white;
 
-		[Tooltip("Color2: Bottom or Right.")]
-		[SerializeField] Color m_Color2 = Color.white;
+        [Tooltip("Color2: Bottom or Right.")]
+        [SerializeField] Color m_Color2 = Color.white;
 
-		[Tooltip("Color3: For diagonal.")]
-		[SerializeField] Color m_Color3 = Color.white;
+        [Tooltip("Color3: For diagonal.")]
+        [SerializeField] Color m_Color3 = Color.white;
 
-		[Tooltip("Color4: For diagonal.")]
-		[SerializeField] Color m_Color4 = Color.white;
+        [Tooltip("Color4: For diagonal.")]
+        [SerializeField] Color m_Color4 = Color.white;
 
-		[Tooltip("Gradient rotation.")]
-		[SerializeField][Range(-180, 180)] float m_Rotation;
+        [Tooltip("Gradient rotation.")]
+        [SerializeField][Range(-180, 180)] float m_Rotation;
 
-		[Tooltip("Gradient offset for Horizontal, Vertical or Angle.")]
-		[SerializeField][Range(-1, 1)] float m_Offset1;
+        [Tooltip("Gradient offset for Horizontal, Vertical or Angle.")]
+        [SerializeField][Range(-1, 1)] float m_Offset1;
 
-		[Tooltip("Gradient offset for Diagonal.")]
-		[SerializeField][Range(-1, 1)] float m_Offset2;
+        [Tooltip("Gradient offset for Diagonal.")]
+        [SerializeField][Range(-1, 1)] float m_Offset2;
 
-		[Tooltip("Gradient style for Text.")]
-		[SerializeField] GradientStyle m_GradientStyle;
+        [Tooltip("Gradient style for Text.")]
+        [SerializeField] GradientStyle m_GradientStyle;
 
-		[Tooltip("Color space to correct color.")]
-		[SerializeField] ColorSpace m_ColorSpace = ColorSpace.Uninitialized;
+        [Tooltip("Color space to correct color.")]
+        [SerializeField] ColorSpace m_ColorSpace = ColorSpace.Uninitialized;
 
-		[Tooltip("Ignore aspect ratio.")]
-		[SerializeField] bool m_IgnoreAspectRatio = true;
+        [Tooltip("Ignore aspect ratio.")]
+        [SerializeField] bool m_IgnoreAspectRatio = true;
 
 
-		//################################
-		// Public Members.
-		//################################
-		public Graphic targetGraphic { get { return base.graphic; } }
+        //################################
+        // Public Members.
+        //################################
+        public Graphic targetGraphic { get { return base.graphic; } }
 
-		/// <summary>
-		/// Gradient Direction.
-		/// </summary>
-		public Direction direction
-		{
-			get { return m_Direction; }
-			set
-			{
-				if (m_Direction != value)
-				{
-					m_Direction = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Gradient Direction.
+        /// </summary>
+        public Direction direction
+        {
+            get { return m_Direction; }
+            set
+            {
+                if (m_Direction != value)
+                {
+                    m_Direction = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Color1: Top or Left.
-		/// </summary>
-		public Color color1
-		{
-			get { return m_Color1; }
-			set
-			{
-				if (m_Color1 != value)
-				{
-					m_Color1 = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Color1: Top or Left.
+        /// </summary>
+        public Color color1
+        {
+            get { return m_Color1; }
+            set
+            {
+                if (m_Color1 != value)
+                {
+                    m_Color1 = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Color2: Bottom or Right.
-		/// </summary>
-		public Color color2
-		{
-			get { return m_Color2; }
-			set
-			{
-				if (m_Color2 != value)
-				{
-					m_Color2 = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Color2: Bottom or Right.
+        /// </summary>
+        public Color color2
+        {
+            get { return m_Color2; }
+            set
+            {
+                if (m_Color2 != value)
+                {
+                    m_Color2 = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Color3: For diagonal.
-		/// </summary>
-		public Color color3
-		{
-			get { return m_Color3; }
-			set
-			{
-				if (m_Color3 != value)
-				{
-					m_Color3 = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Color3: For diagonal.
+        /// </summary>
+        public Color color3
+        {
+            get { return m_Color3; }
+            set
+            {
+                if (m_Color3 != value)
+                {
+                    m_Color3 = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Color4: For diagonal.
-		/// </summary>
-		public Color color4
-		{
-			get { return m_Color4; }
-			set
-			{
-				if (m_Color4 != value)
-				{
-					m_Color4 = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Color4: For diagonal.
+        /// </summary>
+        public Color color4
+        {
+            get { return m_Color4; }
+            set
+            {
+                if (m_Color4 != value)
+                {
+                    m_Color4 = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Gradient rotation.
-		/// </summary>
-		public float rotation
-		{
-			get
-			{
-				return m_Direction == Direction.Horizontal ? -90
-						: m_Direction == Direction.Vertical ? 0
-						: m_Rotation;
-			}
-			set
-			{
-				if (!Mathf.Approximately(m_Rotation, value))
-				{
-					m_Rotation = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Gradient rotation.
+        /// </summary>
+        public float rotation
+        {
+            get
+            {
+                return m_Direction == Direction.Horizontal ? -90
+                        : m_Direction == Direction.Vertical ? 0
+                        : m_Rotation;
+            }
+            set
+            {
+                if (!Mathf.Approximately(m_Rotation, value))
+                {
+                    m_Rotation = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Gradient offset for Horizontal, Vertical or Angle.
-		/// </summary>
-		public float offset
-		{
-			get { return m_Offset1; }
-			set
-			{
-				if (m_Offset1 != value)
-				{
-					m_Offset1 = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Gradient offset for Horizontal, Vertical or Angle.
+        /// </summary>
+        public float offset
+        {
+            get { return m_Offset1; }
+            set
+            {
+                if (m_Offset1 != value)
+                {
+                    m_Offset1 = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Gradient offset for Diagonal.
-		/// </summary>
-		public Vector2 offset2
-		{
-			get { return new Vector2(m_Offset2, m_Offset1); }
-			set
-			{
-				if (m_Offset1 != value.y || m_Offset2 != value.x)
-				{
-					m_Offset1 = value.y;
-					m_Offset2 = value.x;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Gradient offset for Diagonal.
+        /// </summary>
+        public Vector2 offset2
+        {
+            get { return new Vector2(m_Offset2, m_Offset1); }
+            set
+            {
+                if (m_Offset1 != value.y || m_Offset2 != value.x)
+                {
+                    m_Offset1 = value.y;
+                    m_Offset2 = value.x;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Gradient style for Text.
-		/// </summary>
-		public GradientStyle gradientStyle
-		{
-			get { return m_GradientStyle; }
-			set
-			{
-				if (m_GradientStyle != value)
-				{
-					m_GradientStyle = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Gradient style for Text.
+        /// </summary>
+        public GradientStyle gradientStyle
+        {
+            get { return m_GradientStyle; }
+            set
+            {
+                if (m_GradientStyle != value)
+                {
+                    m_GradientStyle = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Color space to correct color.
-		/// </summary>
-		public ColorSpace colorSpace
-		{
-			get { return m_ColorSpace; }
-			set
-			{
-				if (m_ColorSpace != value)
-				{
-					m_ColorSpace = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Color space to correct color.
+        /// </summary>
+        public ColorSpace colorSpace
+        {
+            get { return m_ColorSpace; }
+            set
+            {
+                if (m_ColorSpace != value)
+                {
+                    m_ColorSpace = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Ignore aspect ratio.
-		/// </summary>
-		public bool ignoreAspectRatio
-		{
-			get { return m_IgnoreAspectRatio; }
-			set
-			{
-				if (m_IgnoreAspectRatio != value)
-				{
-					m_IgnoreAspectRatio = value;
-					SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Ignore aspect ratio.
+        /// </summary>
+        public bool ignoreAspectRatio
+        {
+            get { return m_IgnoreAspectRatio; }
+            set
+            {
+                if (m_IgnoreAspectRatio != value)
+                {
+                    m_IgnoreAspectRatio = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
 
-		/// <summary>
-		/// Call used to modify mesh.
-		/// </summary>
-		public override void ModifyMesh(VertexHelper vh)
-		{
-			if (!IsActive())
-				return;
+        /// <summary>
+        /// Call used to modify mesh.
+        /// </summary>
+        public override void ModifyMesh(VertexHelper vh)
+        {
+            if (!IsActive())
+                return;
 
-			// Gradient space.
-			Rect rect = default(Rect);
-			UIVertex vertex = default(UIVertex);
-			if (m_GradientStyle == GradientStyle.Rect)
-			{
-				// RectTransform.
-				rect = graphic.rectTransform.rect;
-			}
-			else if (m_GradientStyle == GradientStyle.Split)
-			{
-				// Each characters.
-				rect.Set(0, 0, 1, 1);
-			}
-			else if (m_GradientStyle == GradientStyle.Fit)
-			{
-				// Fit to contents.
-				rect.xMin = rect.yMin = float.MaxValue;
-				rect.xMax = rect.yMax = float.MinValue;
-				for (int i = 0; i < vh.currentVertCount; i++)
-				{
-					vh.PopulateUIVertex(ref vertex, i);
-					rect.xMin = Mathf.Min(rect.xMin, vertex.position.x);
-					rect.yMin = Mathf.Min(rect.yMin, vertex.position.y);
-					rect.xMax = Mathf.Max(rect.xMax, vertex.position.x);
-					rect.yMax = Mathf.Max(rect.yMax, vertex.position.y);
-				}
-			}
+            // Gradient space.
+            Rect rect = default(Rect);
+            UIVertex vertex = default(UIVertex);
+            if (m_GradientStyle == GradientStyle.Rect)
+            {
+                // RectTransform.
+                rect = graphic.rectTransform.rect;
+            }
+            else if (m_GradientStyle == GradientStyle.Split)
+            {
+                // Each characters.
+                rect.Set(0, 0, 1, 1);
+            }
+            else if (m_GradientStyle == GradientStyle.Fit)
+            {
+                // Fit to contents.
+                rect.xMin = rect.yMin = float.MaxValue;
+                rect.xMax = rect.yMax = float.MinValue;
+                for (int i = 0; i < vh.currentVertCount; i++)
+                {
+                    vh.PopulateUIVertex(ref vertex, i);
+                    rect.xMin = Mathf.Min(rect.xMin, vertex.position.x);
+                    rect.yMin = Mathf.Min(rect.yMin, vertex.position.y);
+                    rect.xMax = Mathf.Max(rect.xMax, vertex.position.x);
+                    rect.yMax = Mathf.Max(rect.yMax, vertex.position.y);
+                }
+            }
 
-			// Gradient rotation.
-			float rad = rotation * Mathf.Deg2Rad;
-			Vector2 dir = new Vector2(Mathf.Cos(rad), Mathf.Sin(rad));
-			if (!m_IgnoreAspectRatio && Direction.Angle <= m_Direction)
-			{
-				dir.x *= rect.height / rect.width;
-				dir = dir.normalized;
-			}
+            // Gradient rotation.
+            float rad = rotation * Mathf.Deg2Rad;
+            Vector2 dir = new Vector2(Mathf.Cos(rad), Mathf.Sin(rad));
+            if (!m_IgnoreAspectRatio && Direction.Angle <= m_Direction)
+            {
+                dir.x *= rect.height / rect.width;
+                dir = dir.normalized;
+            }
 
-			// Calculate vertex color.
-			Color color;
-			Vector2 nomalizedPos;
-			Matrix2x3 localMatrix = new Matrix2x3(rect, dir.x, dir.y);	// Get local matrix.
-			for (int i = 0; i < vh.currentVertCount; i++)
-			{
-				vh.PopulateUIVertex(ref vertex, i);
+            // Calculate vertex color.
+            Color color;
+            Vector2 nomalizedPos;
+            Matrix2x3 localMatrix = new Matrix2x3(rect, dir.x, dir.y);  // Get local matrix.
+            for (int i = 0; i < vh.currentVertCount; i++)
+            {
+                vh.PopulateUIVertex(ref vertex, i);
 
-				// Normalize vertex position by local matrix.
-				if (m_GradientStyle == GradientStyle.Split)
-				{
-					// Each characters.
-					nomalizedPos = localMatrix * s_SplitedCharacterPosition[i % 4] + offset2;
-				}
-				else
-				{
-					nomalizedPos = localMatrix * vertex.position + offset2;
-				}
+                // Normalize vertex position by local matrix.
+                if (m_GradientStyle == GradientStyle.Split)
+                {
+                    // Each characters.
+                    nomalizedPos = localMatrix * s_SplitedCharacterPosition[i % 4] + offset2;
+                }
+                else
+                {
+                    nomalizedPos = localMatrix * vertex.position + offset2;
+                }
 
-				// Interpolate vertex color.
-				if (direction == Direction.Diagonal)
-				{
-					color = Color.LerpUnclamped(
-						Color.LerpUnclamped(m_Color1, m_Color2, nomalizedPos.x),
-						Color.LerpUnclamped(m_Color3, m_Color4, nomalizedPos.x),
-						nomalizedPos.y);
-				}
-				else
-				{
-					color = Color.LerpUnclamped(m_Color2, m_Color1, nomalizedPos.y);
-				}
+                // Interpolate vertex color.
+                if (direction == Direction.Diagonal)
+                {
+                    color = Color.LerpUnclamped(
+                        Color.LerpUnclamped(m_Color1, m_Color2, nomalizedPos.x),
+                        Color.LerpUnclamped(m_Color3, m_Color4, nomalizedPos.x),
+                        nomalizedPos.y);
+                }
+                else
+                {
+                    color = Color.LerpUnclamped(m_Color2, m_Color1, nomalizedPos.y);
+                }
 
-				// Correct color.
-				vertex.color *= (m_ColorSpace == ColorSpace.Gamma) ? color.gamma
-					: (m_ColorSpace == ColorSpace.Linear) ? color.linear
-					: color;
+                // Correct color.
+                vertex.color *= (m_ColorSpace == ColorSpace.Gamma) ? color.gamma
+                    : (m_ColorSpace == ColorSpace.Linear) ? color.linear
+                    : color;
 
-				vh.SetUIVertex(vertex, i);
-			}
-		}
+                vh.SetUIVertex(vertex, i);
+            }
+        }
 
 
-		//################################
-		// Private Members.
-		//################################
-		static readonly Vector2[] s_SplitedCharacterPosition = { Vector2.up, Vector2.one, Vector2.right, Vector2.zero };
+        //################################
+        // Private Members.
+        //################################
+        static readonly Vector2[] s_SplitedCharacterPosition = { Vector2.up, Vector2.one, Vector2.right, Vector2.zero };
 
-		/// <summary>
-		/// Matrix2x3.
-		/// </summary>
-		struct Matrix2x3
-		{
-			public float m00, m01, m02, m10, m11, m12;
+        /// <summary>
+        /// Matrix2x3.
+        /// </summary>
+        struct Matrix2x3
+        {
+            public float m00, m01, m02, m10, m11, m12;
 
-			public Matrix2x3(Rect rect, float cos, float sin)
-			{
-				const float center = 0.5f;
-				float dx = -rect.xMin / rect.width - center;
-				float dy = -rect.yMin / rect.height - center;
-				m00 = cos / rect.width;
-				m01 = -sin / rect.height;
-				m02 = dx * cos - dy * sin + center;
-				m10 = sin / rect.width;
-				m11 = cos / rect.height;		
-				m12 = dx * sin + dy * cos + center;
-			}
+            public Matrix2x3(Rect rect, float cos, float sin)
+            {
+                const float center = 0.5f;
+                float dx = -rect.xMin / rect.width - center;
+                float dy = -rect.yMin / rect.height - center;
+                m00 = cos / rect.width;
+                m01 = -sin / rect.height;
+                m02 = dx * cos - dy * sin + center;
+                m10 = sin / rect.width;
+                m11 = cos / rect.height;
+                m12 = dx * sin + dy * cos + center;
+            }
 
-			public static Vector2 operator*(Matrix2x3 m, Vector2 v)
-			{
-				return new Vector2(
-					(m.m00 * v.x) + (m.m01 * v.y) + m.m02,
-					(m.m10 * v.x) + (m.m11 * v.y) + m.m12
-				);
-			}
-		}
-	}
+            public static Vector2 operator *(Matrix2x3 m, Vector2 v)
+            {
+                return new Vector2(
+                    (m.m00 * v.x) + (m.m01 * v.y) + m.m02,
+                    (m.m10 * v.x) + (m.m11 * v.y) + m.m12
+                );
+            }
+        }
+    }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIHsvModifier.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIHsvModifier.cs
index 52138f20..707a30c1 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIHsvModifier.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIHsvModifier.cs
@@ -1,194 +1,193 @@
 using UnityEngine;
-using UnityEngine.Serialization;
 using UnityEngine.UI;
 
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// HSV Modifier.
-	/// </summary>
-	[AddComponentMenu("UI/UIEffect/UIHsvModifier", 4)]
-	public class UIHsvModifier : UIEffectBase
-	{
-		//################################
-		// Constant or Static Members.
-		//################################
-		public const string shaderName = "UI/Hidden/UI-Effect-HSV";
-		static readonly ParameterTexture _ptex = new ParameterTexture(7, 128, "_ParamTex");
+    /// <summary>
+    /// HSV Modifier.
+    /// </summary>
+    [AddComponentMenu("UI/UIEffect/UIHsvModifier", 4)]
+    public class UIHsvModifier : UIEffectBase
+    {
+        //################################
+        // Constant or Static Members.
+        //################################
+        public const string shaderName = "UI/Hidden/UI-Effect-HSV";
+        static readonly ParameterTexture _ptex = new ParameterTexture(7, 128, "_ParamTex");
 
 
-		//################################
-		// Serialize Members.
-		//################################
-		[Header("Target")]
+        //################################
+        // Serialize Members.
+        //################################
+        [Header("Target")]
 
-		[Tooltip("Target color to affect hsv shift.")]
-		[SerializeField] [ColorUsage(false)] Color m_TargetColor = Color.red;
+        [Tooltip("Target color to affect hsv shift.")]
+        [SerializeField][ColorUsage(false)] Color m_TargetColor = Color.red;
 
-		[Tooltip("Color range to affect hsv shift [0 ~ 1].")]
-		[SerializeField] [Range(0, 1)] float m_Range = 0.1f;
+        [Tooltip("Color range to affect hsv shift [0 ~ 1].")]
+        [SerializeField][Range(0, 1)] float m_Range = 0.1f;
 
-		[Header("Adjustment")]
+        [Header("Adjustment")]
 
-		[Tooltip("Hue shift [-0.5 ~ 0.5].")]
-		[SerializeField] [Range(-0.5f, 0.5f)] float m_Hue;
+        [Tooltip("Hue shift [-0.5 ~ 0.5].")]
+        [SerializeField][Range(-0.5f, 0.5f)] float m_Hue;
 
-		[Tooltip("Saturation shift [-0.5 ~ 0.5].")]
-		[SerializeField] [Range(-0.5f, 0.5f)] float m_Saturation;
+        [Tooltip("Saturation shift [-0.5 ~ 0.5].")]
+        [SerializeField][Range(-0.5f, 0.5f)] float m_Saturation;
 
-		[Tooltip("Value shift [-0.5 ~ 0.5].")]
-		[SerializeField] [Range(-0.5f, 0.5f)] float m_Value;
+        [Tooltip("Value shift [-0.5 ~ 0.5].")]
+        [SerializeField][Range(-0.5f, 0.5f)] float m_Value;
 
 
-		//################################
-		// Public Members.
-		//################################
+        //################################
+        // Public Members.
+        //################################
 
-		/// <summary>
-		/// Target color to affect hsv shift.
-		/// </summary>
-		public Color targetColor
-		{
-			get { return m_TargetColor; }
-			set
-			{ 
-				if (m_TargetColor != value)
-				{
-					m_TargetColor = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Target color to affect hsv shift.
+        /// </summary>
+        public Color targetColor
+        {
+            get { return m_TargetColor; }
+            set
+            {
+                if (m_TargetColor != value)
+                {
+                    m_TargetColor = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Color range to affect hsv shift [0 ~ 1].
-		/// </summary>
-		public float range
-		{
-			get { return m_Range; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_Range, value))
-				{
-					m_Range = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Color range to affect hsv shift [0 ~ 1].
+        /// </summary>
+        public float range
+        {
+            get { return m_Range; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_Range, value))
+                {
+                    m_Range = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Saturation shift [-0.5 ~ 0.5].
-		/// </summary>
-		public float saturation
-		{
-			get { return m_Saturation; }
-			set
-			{
-				value = Mathf.Clamp(value, -0.5f, 0.5f);
-				if (!Mathf.Approximately(m_Saturation, value))
-				{
-					m_Saturation = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Saturation shift [-0.5 ~ 0.5].
+        /// </summary>
+        public float saturation
+        {
+            get { return m_Saturation; }
+            set
+            {
+                value = Mathf.Clamp(value, -0.5f, 0.5f);
+                if (!Mathf.Approximately(m_Saturation, value))
+                {
+                    m_Saturation = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Value shift [-0.5 ~ 0.5].
-		/// </summary>
-		public float value
-		{
-			get { return m_Value; }
-			set
-			{
-				value = Mathf.Clamp(value, -0.5f, 0.5f);
-				if (!Mathf.Approximately(m_Value, value))
-				{
-					m_Value = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Value shift [-0.5 ~ 0.5].
+        /// </summary>
+        public float value
+        {
+            get { return m_Value; }
+            set
+            {
+                value = Mathf.Clamp(value, -0.5f, 0.5f);
+                if (!Mathf.Approximately(m_Value, value))
+                {
+                    m_Value = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Hue shift [-0.5 ~ 0.5].
-		/// </summary>
-		public float hue
-		{
-			get { return m_Hue; }
-			set
-			{
-				value = Mathf.Clamp(value, -0.5f, 0.5f);
-				if (!Mathf.Approximately(m_Hue, value))
-				{
-					m_Hue = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Hue shift [-0.5 ~ 0.5].
+        /// </summary>
+        public float hue
+        {
+            get { return m_Hue; }
+            set
+            {
+                value = Mathf.Clamp(value, -0.5f, 0.5f);
+                if (!Mathf.Approximately(m_Hue, value))
+                {
+                    m_Hue = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Gets the parameter texture.
-		/// </summary>
-		public override ParameterTexture ptex { get { return _ptex; } }
+        /// <summary>
+        /// Gets the parameter texture.
+        /// </summary>
+        public override ParameterTexture ptex { get { return _ptex; } }
 
 #if UNITY_EDITOR
-		protected override Material GetMaterial()
-		{
-			if (isTMPro)
-			{
-				return null;
-			}
-			return MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName));
-		}
+        protected override Material GetMaterial()
+        {
+            if (isTMPro)
+            {
+                return null;
+            }
+            return MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName));
+        }
 #endif
 
-		/// <summary>
-		/// Modifies the mesh.
-		/// </summary>
-		public override void ModifyMesh(VertexHelper vh)
-		{
-			if (!isActiveAndEnabled)
-				return;
+        /// <summary>
+        /// Modifies the mesh.
+        /// </summary>
+        public override void ModifyMesh(VertexHelper vh)
+        {
+            if (!isActiveAndEnabled)
+                return;
 
-			float normalizedIndex = ptex.GetNormalizedIndex(this);
-			UIVertex vertex = default(UIVertex);
-			int count = vh.currentVertCount;
-			for (int i = 0; i < count; i++)
-			{
-				vh.PopulateUIVertex(ref vertex, i);
+            float normalizedIndex = ptex.GetNormalizedIndex(this);
+            UIVertex vertex = default(UIVertex);
+            int count = vh.currentVertCount;
+            for (int i = 0; i < count; i++)
+            {
+                vh.PopulateUIVertex(ref vertex, i);
 
-				vertex.uv0 = new Vector2(
-					Packer.ToFloat(vertex.uv0.x, vertex.uv0.y),
-					normalizedIndex
-				);
-				vh.SetUIVertex(vertex, i);
-			}
-		}
+                vertex.uv0 = new Vector2(
+                    Packer.ToFloat(vertex.uv0.x, vertex.uv0.y),
+                    normalizedIndex
+                );
+                vh.SetUIVertex(vertex, i);
+            }
+        }
 
-		protected override void SetDirty()
-		{
-			float h, s, v;
-			Color.RGBToHSV(m_TargetColor, out h, out s, out v);
+        protected override void SetDirty()
+        {
+            float h, s, v;
+            Color.RGBToHSV(m_TargetColor, out h, out s, out v);
 
-			foreach (var m in materials)
-			{
-				ptex.RegisterMaterial (m);
-			}
+            foreach (var m in materials)
+            {
+                ptex.RegisterMaterial(m);
+            }
 
-			ptex.SetData(this, 0, h);	// param1.x : target hue
-			ptex.SetData(this, 1, s);	// param1.y : target saturation
-			ptex.SetData(this, 2, v);	// param1.z : target value
-			ptex.SetData(this, 3, m_Range);		// param1.w : target range
-			ptex.SetData(this, 4, m_Hue + 0.5f);		// param2.x : hue shift
-			ptex.SetData(this, 5, m_Saturation + 0.5f);	// param2.y : saturation shift
-			ptex.SetData(this, 6, m_Value + 0.5f);		// param2.z : value shift
-		}
+            ptex.SetData(this, 0, h);   // param1.x : target hue
+            ptex.SetData(this, 1, s);   // param1.y : target saturation
+            ptex.SetData(this, 2, v);   // param1.z : target value
+            ptex.SetData(this, 3, m_Range);     // param1.w : target range
+            ptex.SetData(this, 4, m_Hue + 0.5f);        // param2.x : hue shift
+            ptex.SetData(this, 5, m_Saturation + 0.5f); // param2.y : saturation shift
+            ptex.SetData(this, 6, m_Value + 0.5f);      // param2.z : value shift
+        }
 
-		//################################
-		// Private Members.
-		//################################
-	}
+        //################################
+        // Private Members.
+        //################################
+    }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIShadow.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIShadow.cs
index 32b0f212..f9819c7d 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIShadow.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIShadow.cs
@@ -5,230 +5,229 @@ using UnityEngine.Serialization;
 using UnityEngine.UI;
 
 #if UNITY_EDITOR
-using System.IO;
-using System.Linq;
 using UnityEditor;
 #endif
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// UIEffect.
-	/// </summary>
-	[RequireComponent(typeof(Graphic))]
-	[AddComponentMenu("UI/UIEffect/UIShadow", 100)]
-	public class UIShadow : BaseMeshEffect, IParameterTexture
+    /// <summary>
+    /// UIEffect.
+    /// </summary>
+    [RequireComponent(typeof(Graphic))]
+    [AddComponentMenu("UI/UIEffect/UIShadow", 100)]
+    public class UIShadow : BaseMeshEffect, IParameterTexture
 #if UNITY_EDITOR
-	, ISerializationCallbackReceiver
+    , ISerializationCallbackReceiver
 #endif
-	{
+    {
 
-		/// <summary>
-		/// Additional shadow.
-		/// </summary>
-		[System.Obsolete]
-		[System.Serializable]
-		public class AdditionalShadow
-		{
-			/// <summary>
-			/// How far is the blurring shadow from the graphic.
-			/// </summary>
-			[FormerlySerializedAs("shadowBlur")]
-			[Range(0, 1)] public float blur = 0.25f;
+        /// <summary>
+        /// Additional shadow.
+        /// </summary>
+        [System.Obsolete]
+        [System.Serializable]
+        public class AdditionalShadow
+        {
+            /// <summary>
+            /// How far is the blurring shadow from the graphic.
+            /// </summary>
+            [FormerlySerializedAs("shadowBlur")]
+            [Range(0, 1)] public float blur = 0.25f;
 
-			/// <summary>
-			/// Shadow effect mode.
-			/// </summary>
-			[FormerlySerializedAs("shadowMode")]
-			public ShadowStyle style = ShadowStyle.Shadow;
+            /// <summary>
+            /// Shadow effect mode.
+            /// </summary>
+            [FormerlySerializedAs("shadowMode")]
+            public ShadowStyle style = ShadowStyle.Shadow;
 
-			/// <summary>
-			/// Color for the shadow effect.
-			/// </summary>
-			[FormerlySerializedAs("shadowColor")]
-			public Color effectColor = Color.black;
+            /// <summary>
+            /// Color for the shadow effect.
+            /// </summary>
+            [FormerlySerializedAs("shadowColor")]
+            public Color effectColor = Color.black;
 
-			/// <summary>
-			/// How far is the shadow from the graphic.
-			/// </summary>
-			public Vector2 effectDistance = new Vector2(1f, -1f);
+            /// <summary>
+            /// How far is the shadow from the graphic.
+            /// </summary>
+            public Vector2 effectDistance = new Vector2(1f, -1f);
 
-			/// <summary>
-			/// Should the shadow inherit the alpha from the graphic?
-			/// </summary>
-			public bool useGraphicAlpha = true;
-		}
+            /// <summary>
+            /// Should the shadow inherit the alpha from the graphic?
+            /// </summary>
+            public bool useGraphicAlpha = true;
+        }
 
-		//################################
-		// Serialize Members.
-		//################################
-		[Tooltip("How far is the blurring shadow from the graphic.")]
-		[FormerlySerializedAs("m_Blur")]
-		[SerializeField][Range(0, 1)] float m_BlurFactor = 1;
+        //################################
+        // Serialize Members.
+        //################################
+        [Tooltip("How far is the blurring shadow from the graphic.")]
+        [FormerlySerializedAs("m_Blur")]
+        [SerializeField][Range(0, 1)] float m_BlurFactor = 1;
 
-		[Tooltip("Shadow effect style.")]
-		[SerializeField] ShadowStyle m_Style = ShadowStyle.Shadow;
+        [Tooltip("Shadow effect style.")]
+        [SerializeField] ShadowStyle m_Style = ShadowStyle.Shadow;
 
-		#pragma warning disable 0414
-		[HideInInspector][System.Obsolete]
-		[SerializeField] List<AdditionalShadow> m_AdditionalShadows = new List<AdditionalShadow>();
-		#pragma warning restore 0414
+#pragma warning disable 0414
+        [HideInInspector]
+        [System.Obsolete]
+        [SerializeField] List<AdditionalShadow> m_AdditionalShadows = new List<AdditionalShadow>();
+#pragma warning restore 0414
 
 
-		[SerializeField]
-		private Color m_EffectColor = new Color (0f, 0f, 0f, 0.5f);
+        [SerializeField]
+        private Color m_EffectColor = new Color(0f, 0f, 0f, 0.5f);
 
-		[SerializeField]
-		private Vector2 m_EffectDistance = new Vector2 (1f, -1f);
+        [SerializeField]
+        private Vector2 m_EffectDistance = new Vector2(1f, -1f);
 
-		[SerializeField]
-		private bool m_UseGraphicAlpha = true;
+        [SerializeField]
+        private bool m_UseGraphicAlpha = true;
 
-		private const float kMaxEffectDistance = 600f;
+        private const float kMaxEffectDistance = 600f;
 
-		public Color effectColor
-		{
-			get { return m_EffectColor; }
-			set
-			{
-				m_EffectColor = value;
-				if (graphic != null)
-					graphic.SetVerticesDirty ();
-			}
-		}
+        public Color effectColor
+        {
+            get { return m_EffectColor; }
+            set
+            {
+                m_EffectColor = value;
+                if (graphic != null)
+                    graphic.SetVerticesDirty();
+            }
+        }
 
-		public Vector2 effectDistance
-		{
-			get { return m_EffectDistance; }
-			set
-			{
-				if (value.x > kMaxEffectDistance)
-					value.x = kMaxEffectDistance;
-				if (value.x < -kMaxEffectDistance)
-					value.x = -kMaxEffectDistance;
+        public Vector2 effectDistance
+        {
+            get { return m_EffectDistance; }
+            set
+            {
+                if (value.x > kMaxEffectDistance)
+                    value.x = kMaxEffectDistance;
+                if (value.x < -kMaxEffectDistance)
+                    value.x = -kMaxEffectDistance;
 
-				if (value.y > kMaxEffectDistance)
-					value.y = kMaxEffectDistance;
-				if (value.y < -kMaxEffectDistance)
-					value.y = -kMaxEffectDistance;
+                if (value.y > kMaxEffectDistance)
+                    value.y = kMaxEffectDistance;
+                if (value.y < -kMaxEffectDistance)
+                    value.y = -kMaxEffectDistance;
 
-				if (m_EffectDistance == value)
-					return;
+                if (m_EffectDistance == value)
+                    return;
 
-				m_EffectDistance = value;
+                m_EffectDistance = value;
 
-				if (graphic != null)
-					graphic.SetVerticesDirty ();
-			}
-		}
+                if (graphic != null)
+                    graphic.SetVerticesDirty();
+            }
+        }
 
-		public bool useGraphicAlpha
-		{
-			get { return m_UseGraphicAlpha; }
-			set
-			{
-				m_UseGraphicAlpha = value;
-				if (graphic != null)
-					graphic.SetVerticesDirty ();
-			}
-		}
+        public bool useGraphicAlpha
+        {
+            get { return m_UseGraphicAlpha; }
+            set
+            {
+                m_UseGraphicAlpha = value;
+                if (graphic != null)
+                    graphic.SetVerticesDirty();
+            }
+        }
 
-		//################################
-		// Public Members.
-		//################################
-		/// <summary>
-		/// How far is the blurring shadow from the graphic.
-		/// </summary>
-		[System.Obsolete("Use blurFactor instead (UnityUpgradable) -> blurFactor")]
-		public float blur
-		{
-			get { return m_BlurFactor; }
-			set
-			{
-				m_BlurFactor = Mathf.Clamp(value, 0, 2);
-				_SetDirty();
-			}
-		}
+        //################################
+        // Public Members.
+        //################################
+        /// <summary>
+        /// How far is the blurring shadow from the graphic.
+        /// </summary>
+        [System.Obsolete("Use blurFactor instead (UnityUpgradable) -> blurFactor")]
+        public float blur
+        {
+            get { return m_BlurFactor; }
+            set
+            {
+                m_BlurFactor = Mathf.Clamp(value, 0, 2);
+                _SetDirty();
+            }
+        }
 
-		/// <summary>
-		/// How far is the blurring shadow from the graphic.
-		/// </summary>
-		public float blurFactor
-		{
-			get { return m_BlurFactor; }
-			set
-			{
-				m_BlurFactor = Mathf.Clamp(value, 0, 2);
-				_SetDirty();
-			}
-		}
+        /// <summary>
+        /// How far is the blurring shadow from the graphic.
+        /// </summary>
+        public float blurFactor
+        {
+            get { return m_BlurFactor; }
+            set
+            {
+                m_BlurFactor = Mathf.Clamp(value, 0, 2);
+                _SetDirty();
+            }
+        }
 
-		/// <summary>
-		/// Shadow effect style.
-		/// </summary>
-		public ShadowStyle style
-		{
-			get { return m_Style; }
-			set
-			{
-				m_Style = value;
-				_SetDirty();
-			}
-		}
+        /// <summary>
+        /// Shadow effect style.
+        /// </summary>
+        public ShadowStyle style
+        {
+            get { return m_Style; }
+            set
+            {
+                m_Style = value;
+                _SetDirty();
+            }
+        }
 
-		/// <summary>
-		/// Gets or sets the parameter index.
-		/// </summary>
-		public int parameterIndex { get; set; }
+        /// <summary>
+        /// Gets or sets the parameter index.
+        /// </summary>
+        public int parameterIndex { get; set; }
 
-		/// <summary>
-		/// Gets the parameter texture.
-		/// </summary>
-		public ParameterTexture ptex{ get; private set; }
+        /// <summary>
+        /// Gets the parameter texture.
+        /// </summary>
+        public ParameterTexture ptex { get; private set; }
 
-		int _graphicVertexCount;
-		static readonly List<UIShadow> tmpShadows = new List<UIShadow>();
+        int _graphicVertexCount;
+        static readonly List<UIShadow> tmpShadows = new List<UIShadow>();
 
-		protected override void OnEnable()
-		{
-			base.OnEnable();
+        protected override void OnEnable()
+        {
+            base.OnEnable();
 
-			_uiEffect = GetComponent<UIEffect>();
-			if (_uiEffect)
-			{
-				ptex = _uiEffect.ptex;
-				ptex.Register(this);
-			}
+            _uiEffect = GetComponent<UIEffect>();
+            if (_uiEffect)
+            {
+                ptex = _uiEffect.ptex;
+                ptex.Register(this);
+            }
 
-			#if TMP_PRESENT
+#if TMP_PRESENT
 			if (isTMPro)
 			{
 				textMeshPro.onCullStateChanged.AddListener (OnCullStateChanged);
 			}
-			#endif
-		}
+#endif
+        }
 
-		protected override void OnDisable()
-		{
-			base.OnDisable();
-			_uiEffect = null;
-			if (ptex != null)
-			{
-				ptex.Unregister(this);
-				ptex = null;
-			}
-		}
+        protected override void OnDisable()
+        {
+            base.OnDisable();
+            _uiEffect = null;
+            if (ptex != null)
+            {
+                ptex.Unregister(this);
+                ptex = null;
+            }
+        }
 
 
-		#if UNITY_EDITOR
-		protected override void OnValidate ()
-		{
-			effectDistance = m_EffectDistance;
-			base.OnValidate ();
-		}
-		#endif
+#if UNITY_EDITOR
+        protected override void OnValidate()
+        {
+            effectDistance = m_EffectDistance;
+            base.OnValidate();
+        }
+#endif
 
-		#if TMP_PRESENT
+#if TMP_PRESENT
 		protected void OnCullStateChanged (bool state)
 		{
 			SetVerticesDirty ();
@@ -249,213 +248,213 @@ namespace Coffee.UIExtensions
 			}
 			base.LateUpdate ();
 		}
-		#endif
+#endif
 
-		/// <summary>
-		/// Modifies the mesh.
-		/// </summary>
-		public override void ModifyMesh(VertexHelper vh)
-		{
-			if (!isActiveAndEnabled || vh.currentVertCount <= 0 || m_Style == ShadowStyle.None)
-			{
-				return;
-			}
+        /// <summary>
+        /// Modifies the mesh.
+        /// </summary>
+        public override void ModifyMesh(VertexHelper vh)
+        {
+            if (!isActiveAndEnabled || vh.currentVertCount <= 0 || m_Style == ShadowStyle.None)
+            {
+                return;
+            }
 
-			vh.GetUIVertexStream(s_Verts);
+            vh.GetUIVertexStream(s_Verts);
 
-			GetComponents<UIShadow>(tmpShadows);
+            GetComponents<UIShadow>(tmpShadows);
 
-			foreach (var s in tmpShadows)
-			{
-				if (s.isActiveAndEnabled)
-				{
-					if (s == this)
-					{
-						foreach (var s2 in tmpShadows)
-						{
-							s2._graphicVertexCount = s_Verts.Count;
-						}
-					}
-					break;
-				}
-			}
+            foreach (var s in tmpShadows)
+            {
+                if (s.isActiveAndEnabled)
+                {
+                    if (s == this)
+                    {
+                        foreach (var s2 in tmpShadows)
+                        {
+                            s2._graphicVertexCount = s_Verts.Count;
+                        }
+                    }
+                    break;
+                }
+            }
 
-			tmpShadows.Clear();
+            tmpShadows.Clear();
 
-			//================================
-			// Append shadow vertices.
-			//================================
-			{
-				_uiEffect = _uiEffect ?? GetComponent<UIEffect>();
-				var start = s_Verts.Count - _graphicVertexCount;
-				var end = s_Verts.Count;
+            //================================
+            // Append shadow vertices.
+            //================================
+            {
+                _uiEffect = _uiEffect ?? GetComponent<UIEffect>();
+                var start = s_Verts.Count - _graphicVertexCount;
+                var end = s_Verts.Count;
 
-				if (ptex != null && _uiEffect && _uiEffect.isActiveAndEnabled)
-				{
-					ptex.SetData(this, 0, _uiEffect.effectFactor);	// param.x : effect factor
-					ptex.SetData(this, 1, 255);	// param.y : color factor
-					ptex.SetData(this, 2, m_BlurFactor);	// param.z : blur factor
-				}
+                if (ptex != null && _uiEffect && _uiEffect.isActiveAndEnabled)
+                {
+                    ptex.SetData(this, 0, _uiEffect.effectFactor);  // param.x : effect factor
+                    ptex.SetData(this, 1, 255); // param.y : color factor
+                    ptex.SetData(this, 2, m_BlurFactor);    // param.z : blur factor
+                }
 
-				_ApplyShadow(s_Verts, effectColor, ref start, ref end, effectDistance, style, useGraphicAlpha);
-			}
+                _ApplyShadow(s_Verts, effectColor, ref start, ref end, effectDistance, style, useGraphicAlpha);
+            }
 
-			vh.Clear();
-			vh.AddUIVertexTriangleStream(s_Verts);
+            vh.Clear();
+            vh.AddUIVertexTriangleStream(s_Verts);
 
-			s_Verts.Clear();
-		}
+            s_Verts.Clear();
+        }
 
-		UIEffect _uiEffect;
+        UIEffect _uiEffect;
 
-		//################################
-		// Private Members.
-		//################################
-		static readonly List<UIVertex> s_Verts = new List<UIVertex>(4096);
+        //################################
+        // Private Members.
+        //################################
+        static readonly List<UIVertex> s_Verts = new List<UIVertex>(4096);
 
-		/// <summary>
-		/// Append shadow vertices.
-		/// * It is similar to Shadow component implementation.
-		/// </summary>
-		void _ApplyShadow(List<UIVertex> verts, Color color, ref int start, ref int end, Vector2 effectDistance, ShadowStyle style, bool useGraphicAlpha)
-		{
-			if (style == ShadowStyle.None || color.a <= 0)
-				return;
+        /// <summary>
+        /// Append shadow vertices.
+        /// * It is similar to Shadow component implementation.
+        /// </summary>
+        void _ApplyShadow(List<UIVertex> verts, Color color, ref int start, ref int end, Vector2 effectDistance, ShadowStyle style, bool useGraphicAlpha)
+        {
+            if (style == ShadowStyle.None || color.a <= 0)
+                return;
 
-			// Append Shadow.
-			_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, effectDistance.x, effectDistance.y, useGraphicAlpha);
+            // Append Shadow.
+            _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, effectDistance.x, effectDistance.y, useGraphicAlpha);
 
-			// Append Shadow3.
-			if (ShadowStyle.Shadow3 == style)
-			{
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, effectDistance.x, 0, useGraphicAlpha);
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, 0, effectDistance.y, useGraphicAlpha);
-			}
+            // Append Shadow3.
+            if (ShadowStyle.Shadow3 == style)
+            {
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, effectDistance.x, 0, useGraphicAlpha);
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, 0, effectDistance.y, useGraphicAlpha);
+            }
 
-			// Append Outline.
-			else if (ShadowStyle.Outline == style)
-			{
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, effectDistance.x, -effectDistance.y, useGraphicAlpha);
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, -effectDistance.x, effectDistance.y, useGraphicAlpha);
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, -effectDistance.x, -effectDistance.y, useGraphicAlpha);
-			}
+            // Append Outline.
+            else if (ShadowStyle.Outline == style)
+            {
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, effectDistance.x, -effectDistance.y, useGraphicAlpha);
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, -effectDistance.x, effectDistance.y, useGraphicAlpha);
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, -effectDistance.x, -effectDistance.y, useGraphicAlpha);
+            }
 
-			// Append Outline8.
-			else if (ShadowStyle.Outline8 == style)
-			{
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, effectDistance.x, -effectDistance.y, useGraphicAlpha);
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, -effectDistance.x, effectDistance.y, useGraphicAlpha);
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, -effectDistance.x, -effectDistance.y, useGraphicAlpha);
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, -effectDistance.x, 0, useGraphicAlpha);
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, 0, -effectDistance.y, useGraphicAlpha);
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, effectDistance.x, 0, useGraphicAlpha);
-				_ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, 0, effectDistance.y, useGraphicAlpha);
-			}
-		}
+            // Append Outline8.
+            else if (ShadowStyle.Outline8 == style)
+            {
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, effectDistance.x, -effectDistance.y, useGraphicAlpha);
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, -effectDistance.x, effectDistance.y, useGraphicAlpha);
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, -effectDistance.x, -effectDistance.y, useGraphicAlpha);
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, -effectDistance.x, 0, useGraphicAlpha);
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, 0, -effectDistance.y, useGraphicAlpha);
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, effectDistance.x, 0, useGraphicAlpha);
+                _ApplyShadowZeroAlloc(s_Verts, color, ref start, ref end, 0, effectDistance.y, useGraphicAlpha);
+            }
+        }
 
-		/// <summary>
-		/// Append shadow vertices.
-		/// * It is similar to Shadow component implementation.
-		/// </summary>
-		void _ApplyShadowZeroAlloc(List<UIVertex> verts, Color color, ref int start, ref int end, float x, float y, bool useGraphicAlpha)
-		{
-			// Check list capacity.
-			int count = end - start;
-			var neededCapacity = verts.Count + count;
-			if (verts.Capacity < neededCapacity)
-				verts.Capacity *= 2;
+        /// <summary>
+        /// Append shadow vertices.
+        /// * It is similar to Shadow component implementation.
+        /// </summary>
+        void _ApplyShadowZeroAlloc(List<UIVertex> verts, Color color, ref int start, ref int end, float x, float y, bool useGraphicAlpha)
+        {
+            // Check list capacity.
+            int count = end - start;
+            var neededCapacity = verts.Count + count;
+            if (verts.Capacity < neededCapacity)
+                verts.Capacity *= 2;
 
-			float normalizedIndex = ptex != null && _uiEffect && _uiEffect.isActiveAndEnabled
-				? ptex.GetNormalizedIndex(this)
-				: -1;
+            float normalizedIndex = ptex != null && _uiEffect && _uiEffect.isActiveAndEnabled
+                ? ptex.GetNormalizedIndex(this)
+                : -1;
 
-			// Add 
-			UIVertex vt = default(UIVertex);
-			for (int i = 0; i < count; i++)
-			{
-				verts.Add(vt);
-			}
+            // Add 
+            UIVertex vt = default(UIVertex);
+            for (int i = 0; i < count; i++)
+            {
+                verts.Add(vt);
+            }
 
-			// Move
-			for (int i = verts.Count - 1; count <= i; i--)
-			{
-				verts[i] = verts[i - count];
-			}
+            // Move
+            for (int i = verts.Count - 1; count <= i; i--)
+            {
+                verts[i] = verts[i - count];
+            }
 
-			// Append shadow vertices to the front of list.
-			// * The original vertex is pushed backward.
-			for (int i = 0; i < count; ++i)
-			{
-				vt = verts[i + start + count];
+            // Append shadow vertices to the front of list.
+            // * The original vertex is pushed backward.
+            for (int i = 0; i < count; ++i)
+            {
+                vt = verts[i + start + count];
 
-				Vector3 v = vt.position;
-				vt.position.Set(v.x + x, v.y + y, v.z);
+                Vector3 v = vt.position;
+                vt.position.Set(v.x + x, v.y + y, v.z);
 
-				Color vertColor = effectColor;
-				vertColor.a = useGraphicAlpha ? color.a * vt.color.a / 255 : color.a;
-				vt.color = vertColor;
+                Color vertColor = effectColor;
+                vertColor.a = useGraphicAlpha ? color.a * vt.color.a / 255 : color.a;
+                vt.color = vertColor;
 
 
-				// Set UIEffect prameters
-				if (0 <= normalizedIndex)
-				{
-					vt.uv0 = new Vector2(
-						vt.uv0.x,
-						normalizedIndex
-					);
-				}
+                // Set UIEffect prameters
+                if (0 <= normalizedIndex)
+                {
+                    vt.uv0 = new Vector2(
+                        vt.uv0.x,
+                        normalizedIndex
+                    );
+                }
 
-				verts[i] = vt;
-			}
+                verts[i] = vt;
+            }
 
-			// Update next shadow offset.
-			start = end;
-			end = verts.Count;
-		}
+            // Update next shadow offset.
+            start = end;
+            end = verts.Count;
+        }
 
-		/// <summary>
-		/// Mark the UIEffect as dirty.
-		/// </summary>
-		void _SetDirty()
-		{
-			if (graphic)
-				graphic.SetVerticesDirty();
-		}
+        /// <summary>
+        /// Mark the UIEffect as dirty.
+        /// </summary>
+        void _SetDirty()
+        {
+            if (graphic)
+                graphic.SetVerticesDirty();
+        }
 
 #if UNITY_EDITOR
-		public void OnBeforeSerialize()
-		{
-		}
+        public void OnBeforeSerialize()
+        {
+        }
 
-		public void OnAfterDeserialize()
-		{
-			EditorApplication.delayCall += UpgradeIfNeeded;
-		}
+        public void OnAfterDeserialize()
+        {
+            EditorApplication.delayCall += UpgradeIfNeeded;
+        }
 
 
-		#pragma warning disable 0612
-		void UpgradeIfNeeded()
-		{
-			if (0 < m_AdditionalShadows.Count)
-			{
-				foreach (var s in m_AdditionalShadows)
-				{
-					if (s.style == ShadowStyle.None)
-					{
-						continue;
-					}
+#pragma warning disable 0612
+        void UpgradeIfNeeded()
+        {
+            if (0 < m_AdditionalShadows.Count)
+            {
+                foreach (var s in m_AdditionalShadows)
+                {
+                    if (s.style == ShadowStyle.None)
+                    {
+                        continue;
+                    }
 
-					var shadow = gameObject.AddComponent<UIShadow>();
-					shadow.style = s.style;
-					shadow.effectDistance = s.effectDistance;
-					shadow.effectColor = s.effectColor;
-					shadow.useGraphicAlpha = s.useGraphicAlpha;
-					shadow.blurFactor = s.blur;
-				}
-				m_AdditionalShadows = null;
-			}
-		}
-		#pragma warning restore 0612
+                    var shadow = gameObject.AddComponent<UIShadow>();
+                    shadow.style = s.style;
+                    shadow.effectDistance = s.effectDistance;
+                    shadow.effectColor = s.effectColor;
+                    shadow.useGraphicAlpha = s.useGraphicAlpha;
+                    shadow.blurFactor = s.blur;
+                }
+                m_AdditionalShadows = null;
+            }
+        }
+#pragma warning restore 0612
 #endif
-	}
+    }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIShiny.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIShiny.cs
index 2d9037f4..5980da43 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIShiny.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UIShiny.cs
@@ -1,408 +1,408 @@
 using System;
-using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.Serialization;
 using UnityEngine.UI;
-using System.Collections;
 
 #if UNITY_EDITOR
-using System.IO;
-using System.Linq;
-using UnityEditor;
 #endif
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// UIEffect.
-	/// </summary>
-	[AddComponentMenu("UI/UIEffect/UIShiny", 2)]
-	public class UIShiny : UIEffectBase
-	{
-		//################################
-		// Constant or Static Members.
-		//################################
-		public const string shaderName = "UI/Hidden/UI-Effect-Shiny";
-		static readonly ParameterTexture _ptex = new ParameterTexture(8, 128, "_ParamTex");
+    /// <summary>
+    /// UIEffect.
+    /// </summary>
+    [AddComponentMenu("UI/UIEffect/UIShiny", 2)]
+    public class UIShiny : UIEffectBase
+    {
+        //################################
+        // Constant or Static Members.
+        //################################
+        public const string shaderName = "UI/Hidden/UI-Effect-Shiny";
+        static readonly ParameterTexture _ptex = new ParameterTexture(8, 128, "_ParamTex");
 
 
-		//################################
-		// Serialize Members.
-		//################################
-		[Tooltip("Location for shiny effect.")]
-		[FormerlySerializedAs("m_Location")]
-		[SerializeField] [Range(0, 1)] float m_EffectFactor = 0;
+        //################################
+        // Serialize Members.
+        //################################
+        [Tooltip("Location for shiny effect.")]
+        [FormerlySerializedAs("m_Location")]
+        [SerializeField][Range(0, 1)] float m_EffectFactor = 0;
 
-		[Tooltip("Width for shiny effect.")]
-		[SerializeField] [Range(0, 1)] float m_Width = 0.25f;
+        [Tooltip("Width for shiny effect.")]
+        [SerializeField][Range(0, 1)] float m_Width = 0.25f;
 
-		[Tooltip("Rotation for shiny effect.")]
-		[SerializeField] [Range(-180, 180)] float m_Rotation;
+        [Tooltip("Rotation for shiny effect.")]
+        [SerializeField][Range(-180, 180)] float m_Rotation;
 
-		[Tooltip("Softness for shiny effect.")]
-		[SerializeField][Range(0.01f, 1)] float m_Softness = 1f;
+        [Tooltip("Softness for shiny effect.")]
+        [SerializeField][Range(0.01f, 1)] float m_Softness = 1f;
 
-		[Tooltip("Brightness for shiny effect.")]
-		[FormerlySerializedAs("m_Alpha")]
-		[SerializeField][Range(0, 1)] float m_Brightness = 1f;
+        [Tooltip("Brightness for shiny effect.")]
+        [FormerlySerializedAs("m_Alpha")]
+        [SerializeField][Range(0, 1)] float m_Brightness = 1f;
 
-		[Tooltip("Gloss factor for shiny effect.")]
-		[FormerlySerializedAs("m_Highlight")]
-		[SerializeField][Range(0, 1)] float m_Gloss = 1;
+        [Tooltip("Gloss factor for shiny effect.")]
+        [FormerlySerializedAs("m_Highlight")]
+        [SerializeField][Range(0, 1)] float m_Gloss = 1;
 
-		[Header("Advanced Option")]
-		[Tooltip("The area for effect.")]
-		[SerializeField] protected EffectArea m_EffectArea;
+        [Header("Advanced Option")]
+        [Tooltip("The area for effect.")]
+        [SerializeField] protected EffectArea m_EffectArea;
 
-		[SerializeField] EffectPlayer m_Player;
+        [SerializeField] EffectPlayer m_Player;
 
-		#pragma warning disable 0414
-		[Obsolete][HideInInspector]
-		[SerializeField] bool m_Play = false;
-		[Obsolete][HideInInspector]
-		[SerializeField] bool m_Loop = false;
-		[Obsolete][HideInInspector]
-		[SerializeField][Range(0.1f, 10)] float m_Duration = 1;
-		[Obsolete][HideInInspector]
-		[SerializeField][Range(0, 10)] float m_LoopDelay = 1;
-		[Obsolete][HideInInspector]
-		[SerializeField] AnimatorUpdateMode m_UpdateMode = AnimatorUpdateMode.Normal;
-		#pragma warning restore 0414
+#pragma warning disable 0414
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField] bool m_Play = false;
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField] bool m_Loop = false;
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField][Range(0.1f, 10)] float m_Duration = 1;
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField][Range(0, 10)] float m_LoopDelay = 1;
+        [Obsolete]
+        [HideInInspector]
+        [SerializeField] AnimatorUpdateMode m_UpdateMode = AnimatorUpdateMode.Normal;
+#pragma warning restore 0414
 
 
-		//################################
-		// Public Members.
-		//################################
+        //################################
+        // Public Members.
+        //################################
 
-		/// <summary>
-		/// Effect factor between 0(start) and 1(end).
-		/// </summary>
-		[System.Obsolete("Use effectFactor instead (UnityUpgradable) -> effectFactor")]
-		public float location
-		{
-			get { return m_EffectFactor; }
-			set
-			{ 
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_EffectFactor, value))
-				{
-					m_EffectFactor = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Effect factor between 0(start) and 1(end).
+        /// </summary>
+        [System.Obsolete("Use effectFactor instead (UnityUpgradable) -> effectFactor")]
+        public float location
+        {
+            get { return m_EffectFactor; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_EffectFactor, value))
+                {
+                    m_EffectFactor = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Effect factor between 0(start) and 1(end).
-		/// </summary>
-		public float effectFactor
-		{
-			get { return m_EffectFactor; }
-			set
-			{ 
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_EffectFactor, value))
-				{
-					m_EffectFactor = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Effect factor between 0(start) and 1(end).
+        /// </summary>
+        public float effectFactor
+        {
+            get { return m_EffectFactor; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_EffectFactor, value))
+                {
+                    m_EffectFactor = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Width for shiny effect.
-		/// </summary>
-		public float width
-		{
-			get { return m_Width; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_Width, value))
-				{
-					m_Width = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Width for shiny effect.
+        /// </summary>
+        public float width
+        {
+            get { return m_Width; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_Width, value))
+                {
+                    m_Width = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Softness for shiny effect.
-		/// </summary>
-		public float softness
-		{
-			get { return m_Softness; }
-			set
-			{
-				value = Mathf.Clamp(value, 0.01f, 1);
-				if (!Mathf.Approximately(m_Softness, value))
-				{
-					m_Softness = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Softness for shiny effect.
+        /// </summary>
+        public float softness
+        {
+            get { return m_Softness; }
+            set
+            {
+                value = Mathf.Clamp(value, 0.01f, 1);
+                if (!Mathf.Approximately(m_Softness, value))
+                {
+                    m_Softness = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Brightness for shiny effect.
-		/// </summary>
-		[System.Obsolete("Use brightness instead (UnityUpgradable) -> brightness")]
-		public float alpha
-		{
-			get { return m_Brightness; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_Brightness, value))
-				{
-					m_Brightness = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Brightness for shiny effect.
+        /// </summary>
+        [System.Obsolete("Use brightness instead (UnityUpgradable) -> brightness")]
+        public float alpha
+        {
+            get { return m_Brightness; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_Brightness, value))
+                {
+                    m_Brightness = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Brightness for shiny effect.
-		/// </summary>
-		public float brightness
-		{
-			get { return m_Brightness; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_Brightness, value))
-				{
-					m_Brightness = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Brightness for shiny effect.
+        /// </summary>
+        public float brightness
+        {
+            get { return m_Brightness; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_Brightness, value))
+                {
+                    m_Brightness = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Gloss factor for shiny effect.
-		/// </summary>
-		[System.Obsolete("Use gloss instead (UnityUpgradable) -> gloss")]
-		public float highlight
-		{
-			get { return m_Gloss; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_Gloss, value))
-				{
-					m_Gloss = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Gloss factor for shiny effect.
+        /// </summary>
+        [System.Obsolete("Use gloss instead (UnityUpgradable) -> gloss")]
+        public float highlight
+        {
+            get { return m_Gloss; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_Gloss, value))
+                {
+                    m_Gloss = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Gloss factor for shiny effect.
-		/// </summary>
-		public float gloss
-		{
-			get { return m_Gloss; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_Gloss, value))
-				{
-					m_Gloss = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Gloss factor for shiny effect.
+        /// </summary>
+        public float gloss
+        {
+            get { return m_Gloss; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_Gloss, value))
+                {
+                    m_Gloss = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Rotation for shiny effect.
-		/// </summary>
-		public float rotation
-		{
-			get { return m_Rotation; }
-			set
-			{
-				if (!Mathf.Approximately(m_Rotation, value))
-				{
-					m_Rotation = _lastRotation = value;
-					SetVerticesDirty ();
-				}
-			}
-		}
+        /// <summary>
+        /// Rotation for shiny effect.
+        /// </summary>
+        public float rotation
+        {
+            get { return m_Rotation; }
+            set
+            {
+                if (!Mathf.Approximately(m_Rotation, value))
+                {
+                    m_Rotation = _lastRotation = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// The area for effect.
-		/// </summary>
-		public EffectArea effectArea
-		{
-			get { return m_EffectArea; }
-			set
-			{
-				if (m_EffectArea != value)
-				{
-					m_EffectArea = value;
-					SetVerticesDirty ();
-				}
-			}
-		}
+        /// <summary>
+        /// The area for effect.
+        /// </summary>
+        public EffectArea effectArea
+        {
+            get { return m_EffectArea; }
+            set
+            {
+                if (m_EffectArea != value)
+                {
+                    m_EffectArea = value;
+                    SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Play shinning on enable.
-		/// </summary>
-		[System.Obsolete ("Use Play/Stop method instead")]
-		public bool play { get { return _player.play; } set { _player.play = value; } }
+        /// <summary>
+        /// Play shinning on enable.
+        /// </summary>
+        [System.Obsolete("Use Play/Stop method instead")]
+        public bool play { get { return _player.play; } set { _player.play = value; } }
 
-		/// <summary>
-		/// Play shinning loop.
-		/// </summary>
-		[System.Obsolete]
-		public bool loop { get { return _player.loop; } set { _player.loop = value; } }
+        /// <summary>
+        /// Play shinning loop.
+        /// </summary>
+        [System.Obsolete]
+        public bool loop { get { return _player.loop; } set { _player.loop = value; } }
 
-		/// <summary>
-		/// Shinning duration.
-		/// </summary>
-		public float duration { get { return _player.duration; } set { _player.duration = Mathf.Max(value, 0.1f); } }
+        /// <summary>
+        /// Shinning duration.
+        /// </summary>
+        public float duration { get { return _player.duration; } set { _player.duration = Mathf.Max(value, 0.1f); } }
 
-		/// <summary>
-		/// Delay on loop.
-		/// </summary>
-		[System.Obsolete]
-		public float loopDelay { get { return _player.loopDelay; } set { _player.loopDelay = Mathf.Max(value, 0); } }
+        /// <summary>
+        /// Delay on loop.
+        /// </summary>
+        [System.Obsolete]
+        public float loopDelay { get { return _player.loopDelay; } set { _player.loopDelay = Mathf.Max(value, 0); } }
 
-		/// <summary>
-		/// Shinning update mode.
-		/// </summary>
-		public AnimatorUpdateMode updateMode { get { return _player.updateMode; } set { _player.updateMode = value; } }
+        /// <summary>
+        /// Shinning update mode.
+        /// </summary>
+        public AnimatorUpdateMode updateMode { get { return _player.updateMode; } set { _player.updateMode = value; } }
 
-		/// <summary>
-		/// Gets the parameter texture.
-		/// </summary>
-		public override ParameterTexture ptex { get { return _ptex; } }
+        /// <summary>
+        /// Gets the parameter texture.
+        /// </summary>
+        public override ParameterTexture ptex { get { return _ptex; } }
 
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable();
-			_player.OnEnable(f => effectFactor = f);
-		}
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            _player.OnEnable(f => effectFactor = f);
+        }
 
-		/// <summary>
-		/// This function is called when the behaviour becomes disabled () or inactive.
-		/// </summary>
-		protected override void OnDisable()
-		{
-			base.OnDisable();
-			_player.OnDisable();
-		}
+        /// <summary>
+        /// This function is called when the behaviour becomes disabled () or inactive.
+        /// </summary>
+        protected override void OnDisable()
+        {
+            base.OnDisable();
+            _player.OnDisable();
+        }
 
 
 #if UNITY_EDITOR
-		protected override Material GetMaterial()
-		{
-			if (isTMPro)
-			{
-				return null;
-			}
+        protected override Material GetMaterial()
+        {
+            if (isTMPro)
+            {
+                return null;
+            }
 
-			return MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName));
-		}
+            return MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName));
+        }
 
-		#pragma warning disable 0612
-		protected override void UpgradeIfNeeded()
-		{
-			// Upgrade for v3.0.0
-			if (IsShouldUpgrade(300))
-			{
-				_player.play = m_Play;
-				_player.duration = m_Duration;
-				_player.loop = m_Loop;
-				_player.loopDelay = m_LoopDelay;
-				_player.updateMode = m_UpdateMode;
-			}
-		}
-		#pragma warning restore 0612
+#pragma warning disable 0612
+        protected override void UpgradeIfNeeded()
+        {
+            // Upgrade for v3.0.0
+            if (IsShouldUpgrade(300))
+            {
+                _player.play = m_Play;
+                _player.duration = m_Duration;
+                _player.loop = m_Loop;
+                _player.loopDelay = m_LoopDelay;
+                _player.updateMode = m_UpdateMode;
+            }
+        }
+#pragma warning restore 0612
 
 #endif
 
-		/// <summary>
-		/// Modifies the mesh.
-		/// </summary>
-		public override void ModifyMesh(VertexHelper vh)
-		{
-			if (!isActiveAndEnabled)
-				return;
+        /// <summary>
+        /// Modifies the mesh.
+        /// </summary>
+        public override void ModifyMesh(VertexHelper vh)
+        {
+            if (!isActiveAndEnabled)
+                return;
 
-			bool isText = isTMPro || graphic is Text;
-			float normalizedIndex = ptex.GetNormalizedIndex(this);
+            bool isText = isTMPro || graphic is Text;
+            float normalizedIndex = ptex.GetNormalizedIndex(this);
 
-			// rect.
-			Rect rect = m_EffectArea.GetEffectArea (vh, rectTransform.rect);
+            // rect.
+            Rect rect = m_EffectArea.GetEffectArea(vh, rectTransform.rect);
 
-			// rotation.
-			float rad = m_Rotation * Mathf.Deg2Rad;
-			Vector2 dir = new Vector2(Mathf.Cos(rad), Mathf.Sin(rad));
-			dir.x *= rect.height / rect.width;
-			dir = dir.normalized;
+            // rotation.
+            float rad = m_Rotation * Mathf.Deg2Rad;
+            Vector2 dir = new Vector2(Mathf.Cos(rad), Mathf.Sin(rad));
+            dir.x *= rect.height / rect.width;
+            dir = dir.normalized;
 
-			// Calculate vertex position.
-			UIVertex vertex = default(UIVertex);
-			Vector2 nomalizedPos;
-			Matrix2x3 localMatrix = new Matrix2x3(rect, dir.x, dir.y);	// Get local matrix.
-			for (int i = 0; i < vh.currentVertCount; i++)
-			{
-				vh.PopulateUIVertex(ref vertex, i);
-				m_EffectArea.GetNormalizedFactor (i, localMatrix, vertex.position, isText, out nomalizedPos);
+            // Calculate vertex position.
+            UIVertex vertex = default(UIVertex);
+            Vector2 nomalizedPos;
+            Matrix2x3 localMatrix = new Matrix2x3(rect, dir.x, dir.y);  // Get local matrix.
+            for (int i = 0; i < vh.currentVertCount; i++)
+            {
+                vh.PopulateUIVertex(ref vertex, i);
+                m_EffectArea.GetNormalizedFactor(i, localMatrix, vertex.position, isText, out nomalizedPos);
 
-				vertex.uv0 = new Vector2 (
-					Packer.ToFloat (vertex.uv0.x, vertex.uv0.y),
-					Packer.ToFloat (nomalizedPos.y, normalizedIndex)
-				);
+                vertex.uv0 = new Vector2(
+                    Packer.ToFloat(vertex.uv0.x, vertex.uv0.y),
+                    Packer.ToFloat(nomalizedPos.y, normalizedIndex)
+                );
 
-				vh.SetUIVertex(vertex, i);
-			}
-		}
+                vh.SetUIVertex(vertex, i);
+            }
+        }
 
-		/// <summary>
-		/// Play effect.
-		/// </summary>
-		public void Play(bool reset = true)
-		{
-			_player.Play(reset);
-		}
+        /// <summary>
+        /// Play effect.
+        /// </summary>
+        public void Play(bool reset = true)
+        {
+            _player.Play(reset);
+        }
 
-		/// <summary>
-		/// Stop effect.
-		/// </summary>
-		public void Stop(bool reset = true)
-		{
-			_player.Stop(reset);
-		}
+        /// <summary>
+        /// Stop effect.
+        /// </summary>
+        public void Stop(bool reset = true)
+        {
+            _player.Stop(reset);
+        }
 
-		protected override void SetDirty()
-		{
-			foreach (var m in materials)
-			{
-				ptex.RegisterMaterial (m);
-			}
-			ptex.SetData(this, 0, m_EffectFactor);	// param1.x : location
-			ptex.SetData(this, 1, m_Width);		// param1.y : width
-			ptex.SetData(this, 2, m_Softness);	// param1.z : softness
-			ptex.SetData(this, 3, m_Brightness);// param1.w : blightness
-			ptex.SetData(this, 4, m_Gloss);		// param2.x : gloss
+        protected override void SetDirty()
+        {
+            foreach (var m in materials)
+            {
+                ptex.RegisterMaterial(m);
+            }
+            ptex.SetData(this, 0, m_EffectFactor);  // param1.x : location
+            ptex.SetData(this, 1, m_Width);     // param1.y : width
+            ptex.SetData(this, 2, m_Softness);  // param1.z : softness
+            ptex.SetData(this, 3, m_Brightness);// param1.w : blightness
+            ptex.SetData(this, 4, m_Gloss);     // param2.x : gloss
 
-			if (!Mathf.Approximately(_lastRotation, m_Rotation) && targetGraphic)
-			{
-				_lastRotation = m_Rotation;
-				SetVerticesDirty();
-			}
-		}
+            if (!Mathf.Approximately(_lastRotation, m_Rotation) && targetGraphic)
+            {
+                _lastRotation = m_Rotation;
+                SetVerticesDirty();
+            }
+        }
 
-		//################################
-		// Private Members.
-		//################################
-		float _lastRotation;
+        //################################
+        // Private Members.
+        //################################
+        float _lastRotation;
 
-		EffectPlayer _player{ get { return m_Player ?? (m_Player = new EffectPlayer()); } }
-	}
+        EffectPlayer _player { get { return m_Player ?? (m_Player = new EffectPlayer()); } }
+    }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UITransitionEffect.cs b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UITransitionEffect.cs
index e2f6bbe9..fdf033ff 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UITransitionEffect.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Coffee/UIExtensions/UIEffect/Scripts/UITransitionEffect.cs
@@ -1,356 +1,355 @@
 using UnityEngine;
 using UnityEngine.UI;
-using UnityEngine.Serialization;
 
 namespace Coffee.UIExtensions
 {
-	/// <summary>
-	/// Transition effect.
-	/// </summary>
-	[AddComponentMenu("UI/UIEffect/UITransitionEffect", 5)]
-	public class UITransitionEffect : UIEffectBase
-	{
-		//################################
-		// Constant or Static Members.
-		//################################
-		public const string shaderName = "UI/Hidden/UI-Effect-Transition";
-		static readonly ParameterTexture _ptex = new ParameterTexture(8, 128, "_ParamTex");
+    /// <summary>
+    /// Transition effect.
+    /// </summary>
+    [AddComponentMenu("UI/UIEffect/UITransitionEffect", 5)]
+    public class UITransitionEffect : UIEffectBase
+    {
+        //################################
+        // Constant or Static Members.
+        //################################
+        public const string shaderName = "UI/Hidden/UI-Effect-Transition";
+        static readonly ParameterTexture _ptex = new ParameterTexture(8, 128, "_ParamTex");
 
-		/// <summary>
-		/// Effect mode.
-		/// </summary>
-		public enum EffectMode
-		{
-			Fade = 1,
-			Cutoff = 2,
-			Dissolve = 3,
-		}
+        /// <summary>
+        /// Effect mode.
+        /// </summary>
+        public enum EffectMode
+        {
+            Fade = 1,
+            Cutoff = 2,
+            Dissolve = 3,
+        }
 
 
-		//################################
-		// Serialize Members.
-		//################################
-		[Tooltip("Effect mode.")]
-		[SerializeField] EffectMode m_EffectMode = EffectMode.Cutoff;
+        //################################
+        // Serialize Members.
+        //################################
+        [Tooltip("Effect mode.")]
+        [SerializeField] EffectMode m_EffectMode = EffectMode.Cutoff;
 
-		[Tooltip("Effect factor between 0(hidden) and 1(shown).")]
-		[SerializeField][Range(0, 1)] float m_EffectFactor = 1;
+        [Tooltip("Effect factor between 0(hidden) and 1(shown).")]
+        [SerializeField][Range(0, 1)] float m_EffectFactor = 1;
 
-		[Tooltip("Transition texture (single channel texture).")]
-		[SerializeField] Texture m_TransitionTexture;
+        [Tooltip("Transition texture (single channel texture).")]
+        [SerializeField] Texture m_TransitionTexture;
 
-		[Header("Advanced Option")]
-		[Tooltip("The area for effect.")]
-		[SerializeField] EffectArea m_EffectArea = EffectArea.RectTransform;
+        [Header("Advanced Option")]
+        [Tooltip("The area for effect.")]
+        [SerializeField] EffectArea m_EffectArea = EffectArea.RectTransform;
 
-		[Tooltip("Keep effect aspect ratio.")]
-		[SerializeField] bool m_KeepAspectRatio;
+        [Tooltip("Keep effect aspect ratio.")]
+        [SerializeField] bool m_KeepAspectRatio;
 
-		[Tooltip("Dissolve edge width.")]
-		[SerializeField] [Range(0, 1)] float m_DissolveWidth = 0.5f;
+        [Tooltip("Dissolve edge width.")]
+        [SerializeField][Range(0, 1)] float m_DissolveWidth = 0.5f;
 
-		[Tooltip("Dissolve edge softness.")]
-		[SerializeField] [Range(0, 1)] float m_DissolveSoftness = 0.5f;
+        [Tooltip("Dissolve edge softness.")]
+        [SerializeField][Range(0, 1)] float m_DissolveSoftness = 0.5f;
 
-		[Tooltip("Dissolve edge color.")]
-		[SerializeField] [ColorUsage(false)] Color m_DissolveColor = new Color(0.0f, 0.25f, 1.0f);
+        [Tooltip("Dissolve edge color.")]
+        [SerializeField][ColorUsage(false)] Color m_DissolveColor = new Color(0.0f, 0.25f, 1.0f);
 
-		[Tooltip("Disable graphic's raycast target on hidden.")]
-		[SerializeField] bool m_PassRayOnHidden;
+        [Tooltip("Disable graphic's raycast target on hidden.")]
+        [SerializeField] bool m_PassRayOnHidden;
 
-		[Header("Effect Player")]
-		[SerializeField] EffectPlayer m_Player;
+        [Header("Effect Player")]
+        [SerializeField] EffectPlayer m_Player;
 
-		//################################
-		// Public Members.
-		//################################
+        //################################
+        // Public Members.
+        //################################
 
-		/// <summary>
-		/// Effect factor between 0(no effect) and 1(complete effect).
-		/// </summary>
-		public float effectFactor
-		{
-			get { return m_EffectFactor; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_EffectFactor, value))
-				{
-					m_EffectFactor = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Effect factor between 0(no effect) and 1(complete effect).
+        /// </summary>
+        public float effectFactor
+        {
+            get { return m_EffectFactor; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_EffectFactor, value))
+                {
+                    m_EffectFactor = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Transition texture.
-		/// </summary>
-		public Texture transitionTexture
-		{
-			get { return m_TransitionTexture; }
-			set
-			{
-				if (m_TransitionTexture != value)
-				{
-					m_TransitionTexture = value;
-					if (graphic)
-					{
-						ModifyMaterial();
-					}
-				}
-			}
-		}
+        /// <summary>
+        /// Transition texture.
+        /// </summary>
+        public Texture transitionTexture
+        {
+            get { return m_TransitionTexture; }
+            set
+            {
+                if (m_TransitionTexture != value)
+                {
+                    m_TransitionTexture = value;
+                    if (graphic)
+                    {
+                        ModifyMaterial();
+                    }
+                }
+            }
+        }
 
-		/// <summary>
-		/// Effect mode.
-		/// </summary>
-		public EffectMode effectMode { get { return m_EffectMode; } }
+        /// <summary>
+        /// Effect mode.
+        /// </summary>
+        public EffectMode effectMode { get { return m_EffectMode; } }
 
-		/// <summary>
-		/// Keep aspect ratio.
-		/// </summary>
-		public bool keepAspectRatio
-		{
-			get { return m_KeepAspectRatio; }
-			set
-			{
-				if (m_KeepAspectRatio != value)
-				{
-					m_KeepAspectRatio = value;
-					targetGraphic.SetVerticesDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Keep aspect ratio.
+        /// </summary>
+        public bool keepAspectRatio
+        {
+            get { return m_KeepAspectRatio; }
+            set
+            {
+                if (m_KeepAspectRatio != value)
+                {
+                    m_KeepAspectRatio = value;
+                    targetGraphic.SetVerticesDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Gets the parameter texture.
-		/// </summary>
-		public override ParameterTexture ptex { get { return _ptex; } }
+        /// <summary>
+        /// Gets the parameter texture.
+        /// </summary>
+        public override ParameterTexture ptex { get { return _ptex; } }
 
-		/// <summary>
-		/// Dissolve edge width.
-		/// </summary>
-		public float dissolveWidth
-		{
-			get { return m_DissolveWidth; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_DissolveWidth, value))
-				{
-					m_DissolveWidth = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Dissolve edge width.
+        /// </summary>
+        public float dissolveWidth
+        {
+            get { return m_DissolveWidth; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_DissolveWidth, value))
+                {
+                    m_DissolveWidth = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Dissolve edge softness.
-		/// </summary>
-		public float dissolveSoftness
-		{
-			get { return m_DissolveSoftness; }
-			set
-			{
-				value = Mathf.Clamp(value, 0, 1);
-				if (!Mathf.Approximately(m_DissolveSoftness, value))
-				{
-					m_DissolveSoftness = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Dissolve edge softness.
+        /// </summary>
+        public float dissolveSoftness
+        {
+            get { return m_DissolveSoftness; }
+            set
+            {
+                value = Mathf.Clamp(value, 0, 1);
+                if (!Mathf.Approximately(m_DissolveSoftness, value))
+                {
+                    m_DissolveSoftness = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Dissolve edge color.
-		/// </summary>
-		public Color dissolveColor
-		{
-			get { return m_DissolveColor; }
-			set
-			{
-				if (m_DissolveColor != value)
-				{
-					m_DissolveColor = value;
-					SetDirty();
-				}
-			}
-		}
+        /// <summary>
+        /// Dissolve edge color.
+        /// </summary>
+        public Color dissolveColor
+        {
+            get { return m_DissolveColor; }
+            set
+            {
+                if (m_DissolveColor != value)
+                {
+                    m_DissolveColor = value;
+                    SetDirty();
+                }
+            }
+        }
 
-		/// <summary>
-		/// Duration for showing/hiding.
-		/// </summary>
-		public float duration { get { return _player.duration; } set { _player.duration = Mathf.Max(value, 0.1f); } }
+        /// <summary>
+        /// Duration for showing/hiding.
+        /// </summary>
+        public float duration { get { return _player.duration; } set { _player.duration = Mathf.Max(value, 0.1f); } }
 
-		/// <summary>
-		/// Disable graphic's raycast target on hidden.
-		/// </summary>
-		public bool passRayOnHidden { get { return m_PassRayOnHidden; } set { m_PassRayOnHidden = value; } }
+        /// <summary>
+        /// Disable graphic's raycast target on hidden.
+        /// </summary>
+        public bool passRayOnHidden { get { return m_PassRayOnHidden; } set { m_PassRayOnHidden = value; } }
 
-		/// <summary>
-		/// Update mode for showing/hiding.
-		/// </summary>
-		public AnimatorUpdateMode updateMode { get { return _player.updateMode; } set { _player.updateMode = value; } }
+        /// <summary>
+        /// Update mode for showing/hiding.
+        /// </summary>
+        public AnimatorUpdateMode updateMode { get { return _player.updateMode; } set { _player.updateMode = value; } }
 
-		/// <summary>
-		/// Show transition.
-		/// </summary>
-		public void Show(bool reset = true)
-		{
-			_player.loop = false;
-			_player.Play(reset, f => effectFactor = f);
-		}
+        /// <summary>
+        /// Show transition.
+        /// </summary>
+        public void Show(bool reset = true)
+        {
+            _player.loop = false;
+            _player.Play(reset, f => effectFactor = f);
+        }
 
-		/// <summary>
-		/// Hide transition.
-		/// </summary>
-		public void Hide(bool reset = true)
-		{
-			_player.loop = false;
-			_player.Play(reset, f => effectFactor = 1 - f);
-		}
+        /// <summary>
+        /// Hide transition.
+        /// </summary>
+        public void Hide(bool reset = true)
+        {
+            _player.loop = false;
+            _player.Play(reset, f => effectFactor = 1 - f);
+        }
 
-		/// <summary>
-		/// Modifies the material.
-		/// </summary>
-		public override void ModifyMaterial()
-		{
-			if (isTMPro)
-			{
-				return;
-			}
+        /// <summary>
+        /// Modifies the material.
+        /// </summary>
+        public override void ModifyMaterial()
+        {
+            if (isTMPro)
+            {
+                return;
+            }
 
-			ulong hash = (m_TransitionTexture ? (uint)m_TransitionTexture.GetInstanceID() : 0) + ((ulong)2 << 32) + ((ulong)m_EffectMode << 36);
-			if (_materialCache != null && (_materialCache.hash != hash || !isActiveAndEnabled || !m_EffectMaterial))
-			{
-				MaterialCache.Unregister(_materialCache);
-				_materialCache = null;
-			}
+            ulong hash = (m_TransitionTexture ? (uint)m_TransitionTexture.GetInstanceID() : 0) + ((ulong)2 << 32) + ((ulong)m_EffectMode << 36);
+            if (_materialCache != null && (_materialCache.hash != hash || !isActiveAndEnabled || !m_EffectMaterial))
+            {
+                MaterialCache.Unregister(_materialCache);
+                _materialCache = null;
+            }
 
-			if (!isActiveAndEnabled || !m_EffectMaterial)
-			{
-				material = null;
-			}
-			else if (!m_TransitionTexture)
-			{
-				material = m_EffectMaterial;
-			}
-			else if (_materialCache != null && _materialCache.hash == hash)
-			{
-				material = _materialCache.material;
-			}
-			else
-			{
-				_materialCache = MaterialCache.Register(hash, m_TransitionTexture, () =>
-					{
-						var mat = new Material(m_EffectMaterial);
-						mat.name += "_" + m_TransitionTexture.name;
-						mat.SetTexture("_NoiseTex", m_TransitionTexture);
-						return mat;
-					});
-				material = _materialCache.material;
-			}
-		}
+            if (!isActiveAndEnabled || !m_EffectMaterial)
+            {
+                material = null;
+            }
+            else if (!m_TransitionTexture)
+            {
+                material = m_EffectMaterial;
+            }
+            else if (_materialCache != null && _materialCache.hash == hash)
+            {
+                material = _materialCache.material;
+            }
+            else
+            {
+                _materialCache = MaterialCache.Register(hash, m_TransitionTexture, () =>
+                    {
+                        var mat = new Material(m_EffectMaterial);
+                        mat.name += "_" + m_TransitionTexture.name;
+                        mat.SetTexture("_NoiseTex", m_TransitionTexture);
+                        return mat;
+                    });
+                material = _materialCache.material;
+            }
+        }
 
-		/// <summary>
-		/// Modifies the mesh.
-		/// </summary>
-		public override void ModifyMesh(VertexHelper vh)
-		{
-			if (!isActiveAndEnabled)
-			{
-				return;
-			}
+        /// <summary>
+        /// Modifies the mesh.
+        /// </summary>
+        public override void ModifyMesh(VertexHelper vh)
+        {
+            if (!isActiveAndEnabled)
+            {
+                return;
+            }
 
-			bool isText = isTMPro || graphic is Text;
-			float normalizedIndex = ptex.GetNormalizedIndex (this);
+            bool isText = isTMPro || graphic is Text;
+            float normalizedIndex = ptex.GetNormalizedIndex(this);
 
-			// rect.
-			var tex = transitionTexture;
-			var aspectRatio = m_KeepAspectRatio && tex ? ((float)tex.width) / tex.height : -1;
-			Rect rect = m_EffectArea.GetEffectArea (vh, rectTransform.rect, aspectRatio);
+            // rect.
+            var tex = transitionTexture;
+            var aspectRatio = m_KeepAspectRatio && tex ? ((float)tex.width) / tex.height : -1;
+            Rect rect = m_EffectArea.GetEffectArea(vh, rectTransform.rect, aspectRatio);
 
-			// Set prameters to vertex.
-			UIVertex vertex = default(UIVertex);
-			float x, y;
-			int count = vh.currentVertCount;
-			for (int i = 0; i < count; i++)
-			{
-				vh.PopulateUIVertex(ref vertex, i);
-				m_EffectArea.GetPositionFactor (i, rect, vertex.position, isText, isTMPro, out x, out y);
+            // Set prameters to vertex.
+            UIVertex vertex = default(UIVertex);
+            float x, y;
+            int count = vh.currentVertCount;
+            for (int i = 0; i < count; i++)
+            {
+                vh.PopulateUIVertex(ref vertex, i);
+                m_EffectArea.GetPositionFactor(i, rect, vertex.position, isText, isTMPro, out x, out y);
 
-				vertex.uv0 = new Vector2 (
-					Packer.ToFloat (vertex.uv0.x, vertex.uv0.y),
-					Packer.ToFloat (x, y, normalizedIndex)
-				);
-				vh.SetUIVertex(vertex, i);
-			}
-		}
+                vertex.uv0 = new Vector2(
+                    Packer.ToFloat(vertex.uv0.x, vertex.uv0.y),
+                    Packer.ToFloat(x, y, normalizedIndex)
+                );
+                vh.SetUIVertex(vertex, i);
+            }
+        }
 
-		//################################
-		// Protected Members.
-		//################################
+        //################################
+        // Protected Members.
+        //################################
 
-		/// <summary>
-		/// This function is called when the object becomes enabled and active.
-		/// </summary>
-		protected override void OnEnable()
-		{
-			base.OnEnable();
-			_player.OnEnable(null);
-			_player.loop = false;
-		}
+        /// <summary>
+        /// This function is called when the object becomes enabled and active.
+        /// </summary>
+        protected override void OnEnable()
+        {
+            base.OnEnable();
+            _player.OnEnable(null);
+            _player.loop = false;
+        }
 
-		/// <summary>
-		/// This function is called when the behaviour becomes disabled () or inactive.
-		/// </summary>
-		protected override void OnDisable()
-		{
-			base.OnDisable ();
-			MaterialCache.Unregister(_materialCache);
-			_materialCache = null;
-			_player.OnDisable();
-		}
+        /// <summary>
+        /// This function is called when the behaviour becomes disabled () or inactive.
+        /// </summary>
+        protected override void OnDisable()
+        {
+            base.OnDisable();
+            MaterialCache.Unregister(_materialCache);
+            _materialCache = null;
+            _player.OnDisable();
+        }
 
-		protected override void SetDirty()
-		{
-			foreach (var m in materials)
-			{
-				ptex.RegisterMaterial (m);
-			}
-			ptex.SetData(this, 0, m_EffectFactor);	// param1.x : effect factor
-			if (m_EffectMode == EffectMode.Dissolve)
-			{
-				ptex.SetData(this, 1, m_DissolveWidth);		// param1.y : width
-				ptex.SetData(this, 2, m_DissolveSoftness);	// param1.z : softness
-				ptex.SetData(this, 4, m_DissolveColor.r);	// param2.x : red
-				ptex.SetData(this, 5, m_DissolveColor.g);	// param2.y : green
-				ptex.SetData(this, 6, m_DissolveColor.b);	// param2.z : blue
-			}
+        protected override void SetDirty()
+        {
+            foreach (var m in materials)
+            {
+                ptex.RegisterMaterial(m);
+            }
+            ptex.SetData(this, 0, m_EffectFactor);  // param1.x : effect factor
+            if (m_EffectMode == EffectMode.Dissolve)
+            {
+                ptex.SetData(this, 1, m_DissolveWidth);     // param1.y : width
+                ptex.SetData(this, 2, m_DissolveSoftness);  // param1.z : softness
+                ptex.SetData(this, 4, m_DissolveColor.r);   // param2.x : red
+                ptex.SetData(this, 5, m_DissolveColor.g);   // param2.y : green
+                ptex.SetData(this, 6, m_DissolveColor.b);   // param2.z : blue
+            }
 
-			// Disable graphic's raycastTarget on hidden.
-			if (m_PassRayOnHidden)
-			{
-				targetGraphic.raycastTarget = 0 < m_EffectFactor;
-			}
-		}
+            // Disable graphic's raycastTarget on hidden.
+            if (m_PassRayOnHidden)
+            {
+                targetGraphic.raycastTarget = 0 < m_EffectFactor;
+            }
+        }
 
 #if UNITY_EDITOR
-		/// <summary>
-		/// Gets the material.
-		/// </summary>
-		/// <returns>The material.</returns>
-		protected override Material GetMaterial()
-		{
-			return MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_EffectMode);
-		}
+        /// <summary>
+        /// Gets the material.
+        /// </summary>
+        /// <returns>The material.</returns>
+        protected override Material GetMaterial()
+        {
+            return MaterialResolver.GetOrGenerateMaterialVariant(Shader.Find(shaderName), m_EffectMode);
+        }
 #endif
 
-		//################################
-		// Private Members.
-		//################################
-		MaterialCache _materialCache = null;
+        //################################
+        // Private Members.
+        //################################
+        MaterialCache _materialCache = null;
 
-		EffectPlayer _player{ get { return m_Player ?? (m_Player = new EffectPlayer()); } }
-	}
+        EffectPlayer _player { get { return m_Player ?? (m_Player = new EffectPlayer()); } }
+    }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs
index b5afb244..adb6735b 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleAudio.cs
@@ -2,7 +2,6 @@
 // Created: 2018/07/13
 
 #if true // MODULE_MARKER
-using System;
 using DG.Tweening.Core;
 using DG.Tweening.Plugins.Options;
 using UnityEngine;
@@ -11,7 +10,7 @@ using UnityEngine.Audio; // Required for AudioMixer
 #pragma warning disable 1591
 namespace DG.Tweening
 {
-	public static class DOTweenModuleAudio
+    public static class DOTweenModuleAudio
     {
         #region Shortcuts
 
@@ -50,11 +49,12 @@ namespace DG.Tweening
         /// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
         public static TweenerCore<float, float, FloatOptions> DOSetFloat(this AudioMixer target, string floatName, float endValue, float duration)
         {
-            TweenerCore<float, float, FloatOptions> t = DOTween.To(()=> {
-                    float currVal;
-                    target.GetFloat(floatName, out currVal);
-                    return currVal;
-                }, x=> target.SetFloat(floatName, x), endValue, duration);
+            TweenerCore<float, float, FloatOptions> t = DOTween.To(() =>
+            {
+                float currVal;
+                target.GetFloat(floatName, out currVal);
+                return currVal;
+            }, x => target.SetFloat(floatName, x), endValue, duration);
             t.SetTarget(target);
             return t;
         }
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs
index 743ef0ab..62fa4d2f 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleEPOOutline.cs
@@ -1,6 +1,4 @@
-using UnityEngine;
-
-#if false || EPO_DOTWEEN // MODULE_MARKER
+#if false || EPO_DOTWEEN // MODULE_MARKER
 
 using EPOOutline;
 using DG.Tweening.Plugins.Options;
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs
index 6e1469eb..cd4cc981 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics.cs
@@ -2,7 +2,6 @@
 // Created: 2018/07/13
 
 #if true // MODULE_MARKER
-using System;
 using DG.Tweening.Core;
 using DG.Tweening.Core.Enums;
 using DG.Tweening.Plugins;
@@ -13,7 +12,7 @@ using UnityEngine;
 #pragma warning disable 1591
 namespace DG.Tweening
 {
-	public static class DOTweenModulePhysics
+    public static class DOTweenModulePhysics
     {
         #region Shortcuts
 
@@ -116,8 +115,10 @@ namespace DG.Tweening
                     .SetOptions(AxisConstraint.Z, snapping).SetEase(Ease.Linear)
                 ).Join(yTween)
                 .SetTarget(target).SetEase(DOTween.defaultEaseType);
-            yTween.OnUpdate(() => {
-                if (!offsetYSet) {
+            yTween.OnUpdate(() =>
+            {
+                if (!offsetYSet)
+                {
                     offsetYSet = true;
                     offsetY = s.isRelative ? endValue.y : endValue.y - startPosY;
                 }
@@ -211,6 +212,6 @@ namespace DG.Tweening
         #endregion
 
         #endregion
-	}
+    }
 }
 #endif
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs
index d6680037..b2d0204f 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModulePhysics2D.cs
@@ -2,7 +2,6 @@
 // Created: 2018/07/13
 
 #if true // MODULE_MARKER
-using System;
 using DG.Tweening.Core;
 using DG.Tweening.Plugins;
 using DG.Tweening.Plugins.Core.PathCore;
@@ -12,7 +11,7 @@ using UnityEngine;
 #pragma warning disable 1591
 namespace DG.Tweening
 {
-	public static class DOTweenModulePhysics2D
+    public static class DOTweenModulePhysics2D
     {
         #region Shortcuts
 
@@ -87,8 +86,10 @@ namespace DG.Tweening
                     .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear)
                 ).Join(yTween)
                 .SetTarget(target).SetEase(DOTween.defaultEaseType);
-            yTween.OnUpdate(() => {
-                if (!offsetYSet) {
+            yTween.OnUpdate(() =>
+            {
+                if (!offsetYSet)
+                {
                     offsetYSet = true;
                     offsetY = s.isRelative ? endValue.y : endValue.y - startPosY;
                 }
@@ -188,6 +189,6 @@ namespace DG.Tweening
         #endregion
 
         #endregion
-	}
+    }
 }
 #endif
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs
index 0efebb31..ebca5a30 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleSprite.cs
@@ -2,15 +2,14 @@
 // Created: 2018/07/13
 
 #if true // MODULE_MARKER
-using System;
-using UnityEngine;
 using DG.Tweening.Core;
 using DG.Tweening.Plugins.Options;
+using UnityEngine;
 
 #pragma warning disable 1591
 namespace DG.Tweening
 {
-	public static class DOTweenModuleSprite
+    public static class DOTweenModuleSprite
     {
         #region Shortcuts
 
@@ -45,9 +44,11 @@ namespace DG.Tweening
             Sequence s = DOTween.Sequence();
             GradientColorKey[] colors = gradient.colorKeys;
             int len = colors.Length;
-            for (int i = 0; i < len; ++i) {
+            for (int i = 0; i < len; ++i)
+            {
                 GradientColorKey c = colors[i];
-                if (i == 0 && c.time <= 0) {
+                if (i == 0 && c.time <= 0)
+                {
                     target.color = c.color;
                     continue;
                 }
@@ -75,11 +76,12 @@ namespace DG.Tweening
         {
             endValue = endValue - target.color;
             Color to = new Color(0, 0, 0, 0);
-            return DOTween.To(() => to, x => {
-                    Color diff = x - to;
-                    to = x;
-                    target.color += diff;
-                }, endValue, duration)
+            return DOTween.To(() => to, x =>
+            {
+                Color diff = x - to;
+                to = x;
+                target.color += diff;
+            }, endValue, duration)
                 .Blendable().SetTarget(target);
         }
 
@@ -88,6 +90,6 @@ namespace DG.Tweening
         #endregion
 
         #endregion
-	}
+    }
 }
 #endif
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs
index 6322b3af..276bf269 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUI.cs
@@ -3,21 +3,20 @@
 
 #if true // MODULE_MARKER
 
-using System;
-using System.Globalization;
-using UnityEngine;
-using UnityEngine.UI;
 using DG.Tweening.Core;
 using DG.Tweening.Core.Enums;
 using DG.Tweening.Plugins;
 using DG.Tweening.Plugins.Options;
+using System.Globalization;
+using UnityEngine;
+using UnityEngine.UI;
 using Outline = UnityEngine.UI.Outline;
 using Text = UnityEngine.UI.Text;
 
 #pragma warning disable 1591
 namespace DG.Tweening
 {
-	public static class DOTweenModuleUI
+    public static class DOTweenModuleUI
     {
         #region Shortcuts
 
@@ -102,9 +101,11 @@ namespace DG.Tweening
             Sequence s = DOTween.Sequence();
             GradientColorKey[] colors = gradient.colorKeys;
             int len = colors.Length;
-            for (int i = 0; i < len; ++i) {
+            for (int i = 0; i < len; ++i)
+            {
                 GradientColorKey c = colors[i];
-                if (i == 0 && c.time <= 0) {
+                if (i == 0 && c.time <= 0)
+                {
                     target.color = c.color;
                     continue;
                 }
@@ -127,10 +128,11 @@ namespace DG.Tweening
         /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
         public static TweenerCore<Vector2, Vector2, VectorOptions> DOFlexibleSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false)
         {
-            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => new Vector2(target.flexibleWidth, target.flexibleHeight), x => {
-                    target.flexibleWidth = x.x;
-                    target.flexibleHeight = x.y;
-                }, endValue, duration);
+            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => new Vector2(target.flexibleWidth, target.flexibleHeight), x =>
+            {
+                target.flexibleWidth = x.x;
+                target.flexibleHeight = x.y;
+            }, endValue, duration);
             t.SetOptions(snapping).SetTarget(target);
             return t;
         }
@@ -141,7 +143,8 @@ namespace DG.Tweening
         /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
         public static TweenerCore<Vector2, Vector2, VectorOptions> DOMinSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false)
         {
-            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => new Vector2(target.minWidth, target.minHeight), x => {
+            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => new Vector2(target.minWidth, target.minHeight), x =>
+            {
                 target.minWidth = x.x;
                 target.minHeight = x.y;
             }, endValue, duration);
@@ -155,7 +158,8 @@ namespace DG.Tweening
         /// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
         public static TweenerCore<Vector2, Vector2, VectorOptions> DOPreferredSize(this LayoutElement target, Vector2 endValue, float duration, bool snapping = false)
         {
-            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => new Vector2(target.preferredWidth, target.preferredHeight), x => {
+            TweenerCore<Vector2, Vector2, VectorOptions> t = DOTween.To(() => new Vector2(target.preferredWidth, target.preferredHeight), x =>
+            {
                 target.preferredWidth = x.x;
                 target.preferredHeight = x.y;
             }, endValue, duration);
@@ -404,13 +408,15 @@ namespace DG.Tweening
             Tween yTween = DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(0, jumpPower), duration / (numJumps * 2))
                 .SetOptions(AxisConstraint.Y, snapping).SetEase(Ease.OutQuad).SetRelative()
                 .SetLoops(numJumps * 2, LoopType.Yoyo)
-                .OnStart(()=> startPosY = target.anchoredPosition.y);
+                .OnStart(() => startPosY = target.anchoredPosition.y);
             s.Append(DOTween.To(() => target.anchoredPosition, x => target.anchoredPosition = x, new Vector2(endValue.x, 0), duration)
                     .SetOptions(AxisConstraint.X, snapping).SetEase(Ease.Linear)
                 ).Join(yTween)
                 .SetTarget(target).SetEase(DOTween.defaultEaseType);
-            s.OnUpdate(() => {
-                if (!offsetYSet) {
+            s.OnUpdate(() =>
+            {
+                if (!offsetYSet)
+                {
                     offsetYSet = true;
                     offsetY = s.isRelative ? endValue.y : endValue.y - startPosY;
                 }
@@ -434,7 +440,8 @@ namespace DG.Tweening
         public static Tweener DONormalizedPos(this ScrollRect target, Vector2 endValue, float duration, bool snapping = false)
         {
             return DOTween.To(() => new Vector2(target.horizontalNormalizedPosition, target.verticalNormalizedPosition),
-                x => {
+                x =>
+                {
                     target.horizontalNormalizedPosition = x.x;
                     target.verticalNormalizedPosition = x.y;
                 }, endValue, duration)
@@ -498,10 +505,12 @@ namespace DG.Tweening
         /// <param name="culture">The <see cref="CultureInfo"/> to use (InvariantCulture if NULL)</param>
         public static TweenerCore<int, int, NoOptions> DOCounter(
             this Text target, int fromValue, int endValue, float duration, bool addThousandsSeparator = true, CultureInfo culture = null
-        ){
+        )
+        {
             int v = fromValue;
             CultureInfo cInfo = !addThousandsSeparator ? null : culture ?? CultureInfo.InvariantCulture;
-            TweenerCore<int, int, NoOptions> t = DOTween.To(() => v, x => {
+            TweenerCore<int, int, NoOptions> t = DOTween.To(() => v, x =>
+            {
                 v = x;
                 target.text = addThousandsSeparator
                     ? v.ToString("N0", cInfo)
@@ -532,7 +541,8 @@ namespace DG.Tweening
         /// Leave it to NULL (default) to use default ones</param>
         public static TweenerCore<string, string, StringOptions> DOText(this Text target, string endValue, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null)
         {
-            if (endValue == null) {
+            if (endValue == null)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogWarning("You can't pass a NULL string to DOText: an empty string will be used instead to avoid errors");
                 endValue = "";
             }
@@ -557,7 +567,8 @@ namespace DG.Tweening
         {
             endValue = endValue - target.color;
             Color to = new Color(0, 0, 0, 0);
-            return DOTween.To(() => to, x => {
+            return DOTween.To(() => to, x =>
+            {
                 Color diff = x - to;
                 to = x;
                 target.color += diff;
@@ -578,7 +589,8 @@ namespace DG.Tweening
         {
             endValue = endValue - target.color;
             Color to = new Color(0, 0, 0, 0);
-            return DOTween.To(() => to, x => {
+            return DOTween.To(() => to, x =>
+            {
                 Color diff = x - to;
                 to = x;
                 target.color += diff;
@@ -599,7 +611,8 @@ namespace DG.Tweening
         {
             endValue = endValue - target.color;
             Color to = new Color(0, 0, 0, 0);
-            return DOTween.To(() => to, x => {
+            return DOTween.To(() => to, x =>
+            {
                 Color diff = x - to;
                 to = x;
                 target.color += diff;
@@ -657,6 +670,6 @@ namespace DG.Tweening
                 return to.anchoredPosition + localPoint - pivotDerivedOffset;
             }
         }
-	}
+    }
 }
 #endif
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs
index 90498ed3..14d6b32f 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUnityVersion.cs
@@ -1,10 +1,9 @@
 // Author: Daniele Giardini - http://www.demigiant.com
 // Created: 2018/07/13
 
-using System;
-using UnityEngine;
 using DG.Tweening.Core;
 using DG.Tweening.Plugins.Options;
+using UnityEngine;
 //#if UNITY_2018_1_OR_NEWER && (NET_4_6 || NET_STANDARD_2_0)
 //using Task = System.Threading.Tasks.Task;
 //#endif
@@ -29,9 +28,11 @@ namespace DG.Tweening
             Sequence s = DOTween.Sequence();
             GradientColorKey[] colors = gradient.colorKeys;
             int len = colors.Length;
-            for (int i = 0; i < len; ++i) {
+            for (int i = 0; i < len; ++i)
+            {
                 GradientColorKey c = colors[i];
-                if (i == 0 && c.time <= 0) {
+                if (i == 0 && c.time <= 0)
+                {
                     target.color = c.color;
                     continue;
                 }
@@ -54,9 +55,11 @@ namespace DG.Tweening
             Sequence s = DOTween.Sequence();
             GradientColorKey[] colors = gradient.colorKeys;
             int len = colors.Length;
-            for (int i = 0; i < len; ++i) {
+            for (int i = 0; i < len; ++i)
+            {
                 GradientColorKey c = colors[i];
-                if (i == 0 && c.time <= 0) {
+                if (i == 0 && c.time <= 0)
+                {
                     target.SetColor(property, c.color);
                     continue;
                 }
@@ -80,7 +83,8 @@ namespace DG.Tweening
         /// </summary>
         public static CustomYieldInstruction WaitForCompletion(this Tween t, bool returnCustomYieldInstruction)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return null;
             }
@@ -94,7 +98,8 @@ namespace DG.Tweening
         /// </summary>
         public static CustomYieldInstruction WaitForRewind(this Tween t, bool returnCustomYieldInstruction)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return null;
             }
@@ -108,7 +113,8 @@ namespace DG.Tweening
         /// </summary>
         public static CustomYieldInstruction WaitForKill(this Tween t, bool returnCustomYieldInstruction)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return null;
             }
@@ -123,7 +129,8 @@ namespace DG.Tweening
         /// <param name="elapsedLoops">Elapsed loops to wait for</param>
         public static CustomYieldInstruction WaitForElapsedLoops(this Tween t, int elapsedLoops, bool returnCustomYieldInstruction)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return null;
             }
@@ -139,7 +146,8 @@ namespace DG.Tweening
         /// <param name="position">Position (loops included, delays excluded) to wait for</param>
         public static CustomYieldInstruction WaitForPosition(this Tween t, float position, bool returnCustomYieldInstruction)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return null;
             }
@@ -154,7 +162,8 @@ namespace DG.Tweening
         /// </summary>
         public static CustomYieldInstruction WaitForStart(this Tween t, bool returnCustomYieldInstruction)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return null;
             }
@@ -175,7 +184,8 @@ namespace DG.Tweening
         /// <param name="duration">The duration of the tween</param>
         public static TweenerCore<Vector2, Vector2, VectorOptions> DOOffset(this Material target, Vector2 endValue, int propertyID, float duration)
         {
-            if (!target.HasProperty(propertyID)) {
+            if (!target.HasProperty(propertyID))
+            {
                 if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID);
                 return null;
             }
@@ -191,7 +201,8 @@ namespace DG.Tweening
         /// <param name="duration">The duration of the tween</param>
         public static TweenerCore<Vector2, Vector2, VectorOptions> DOTiling(this Material target, Vector2 endValue, int propertyID, float duration)
         {
-            if (!target.HasProperty(propertyID)) {
+            if (!target.HasProperty(propertyID))
+            {
                 if (Debugger.logPriority > 0) Debugger.LogMissingMaterialProperty(propertyID);
                 return null;
             }
@@ -215,7 +226,8 @@ namespace DG.Tweening
         /// </summary>
         public static async System.Threading.Tasks.Task AsyncWaitForCompletion(this Tween t)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return;
             }
@@ -229,7 +241,8 @@ namespace DG.Tweening
         /// </summary>
         public static async System.Threading.Tasks.Task AsyncWaitForRewind(this Tween t)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return;
             }
@@ -243,7 +256,8 @@ namespace DG.Tweening
         /// </summary>
         public static async System.Threading.Tasks.Task AsyncWaitForKill(this Tween t)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return;
             }
@@ -258,7 +272,8 @@ namespace DG.Tweening
         /// <param name="elapsedLoops">Elapsed loops to wait for</param>
         public static async System.Threading.Tasks.Task AsyncWaitForElapsedLoops(this Tween t, int elapsedLoops)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return;
             }
@@ -274,7 +289,8 @@ namespace DG.Tweening
         /// <param name="position">Position (loops included, delays excluded) to wait for</param>
         public static async System.Threading.Tasks.Task AsyncWaitForPosition(this Tween t, float position)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return;
             }
@@ -288,7 +304,8 @@ namespace DG.Tweening
         /// </summary>
         public static async System.Threading.Tasks.Task AsyncWaitForStart(this Tween t)
         {
-            if (!t.active) {
+            if (!t.active)
+            {
                 if (Debugger.logPriority > 0) Debugger.LogInvalidTween(t);
                 return;
             }
@@ -312,9 +329,13 @@ namespace DG.Tweening
     {
         public class WaitForCompletion : CustomYieldInstruction
         {
-            public override bool keepWaiting { get {
-                return t.active && !t.IsComplete();
-            }}
+            public override bool keepWaiting
+            {
+                get
+                {
+                    return t.active && !t.IsComplete();
+                }
+            }
             readonly Tween t;
             public WaitForCompletion(Tween tween)
             {
@@ -324,9 +345,13 @@ namespace DG.Tweening
 
         public class WaitForRewind : CustomYieldInstruction
         {
-            public override bool keepWaiting { get {
-                return t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0);
-            }}
+            public override bool keepWaiting
+            {
+                get
+                {
+                    return t.active && (!t.playedOnce || t.position * (t.CompletedLoops() + 1) > 0);
+                }
+            }
             readonly Tween t;
             public WaitForRewind(Tween tween)
             {
@@ -336,9 +361,13 @@ namespace DG.Tweening
 
         public class WaitForKill : CustomYieldInstruction
         {
-            public override bool keepWaiting { get {
-                return t.active;
-            }}
+            public override bool keepWaiting
+            {
+                get
+                {
+                    return t.active;
+                }
+            }
             readonly Tween t;
             public WaitForKill(Tween tween)
             {
@@ -348,9 +377,13 @@ namespace DG.Tweening
 
         public class WaitForElapsedLoops : CustomYieldInstruction
         {
-            public override bool keepWaiting { get {
-                return t.active && t.CompletedLoops() < elapsedLoops;
-            }}
+            public override bool keepWaiting
+            {
+                get
+                {
+                    return t.active && t.CompletedLoops() < elapsedLoops;
+                }
+            }
             readonly Tween t;
             readonly int elapsedLoops;
             public WaitForElapsedLoops(Tween tween, int elapsedLoops)
@@ -362,9 +395,13 @@ namespace DG.Tweening
 
         public class WaitForPosition : CustomYieldInstruction
         {
-            public override bool keepWaiting { get {
-                return t.active && t.position * (t.CompletedLoops() + 1) < position;
-            }}
+            public override bool keepWaiting
+            {
+                get
+                {
+                    return t.active && t.position * (t.CompletedLoops() + 1) < position;
+                }
+            }
             readonly Tween t;
             readonly float position;
             public WaitForPosition(Tween tween, float position)
@@ -376,9 +413,13 @@ namespace DG.Tweening
 
         public class WaitForStart : CustomYieldInstruction
         {
-            public override bool keepWaiting { get {
-                return t.active && !t.playedOnce;
-            }}
+            public override bool keepWaiting
+            {
+                get
+                {
+                    return t.active && !t.playedOnce;
+                }
+            }
             readonly Tween t;
             public WaitForStart(Tween tween)
             {
diff --git a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs
index 3d4c786b..d667425a 100644
--- a/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs
+++ b/AxibugEmuOnline.Client/Assets/Plugins/Demigiant/DOTween/Modules/DOTweenModuleUtils.cs
@@ -1,12 +1,12 @@
 // Author: Daniele Giardini - http://www.demigiant.com
 // Created: 2018/07/13
 
-using System;
-using System.Reflection;
-using UnityEngine;
 using DG.Tweening.Core;
 using DG.Tweening.Plugins.Core.PathCore;
 using DG.Tweening.Plugins.Options;
+using System;
+using System.Reflection;
+using UnityEngine;
 
 #pragma warning disable 1591
 namespace DG.Tweening
@@ -69,7 +69,7 @@ namespace DG.Tweening
         // Fires OnApplicationPause in DOTweenComponent even when Editor is paused (otherwise it's only fired at runtime)
 #if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1
         static void PlaymodeStateChanged()
-        #else
+#else
         static void PlaymodeStateChanged(UnityEditor.PlayModeStateChange state)
 #endif
         {
@@ -128,13 +128,16 @@ namespace DG.Tweening
 #endif
             public static TweenerCore<Vector3, Path, PathOptions> CreateDOTweenPathTween(
                 MonoBehaviour target, bool tweenRigidbody, bool isLocal, Path path, float duration, PathMode pathMode
-            ){
+            )
+            {
                 TweenerCore<Vector3, Path, PathOptions> t = null;
                 bool rBodyFoundAndTweened = false;
 #if true // PHYSICS_MARKER
-                if (tweenRigidbody) {
+                if (tweenRigidbody)
+                {
                     Rigidbody rBody = target.GetComponent<Rigidbody>();
-                    if (rBody != null) {
+                    if (rBody != null)
+                    {
                         rBodyFoundAndTweened = true;
                         t = isLocal
                             ? rBody.DOLocalPath(path, duration, pathMode)
@@ -143,9 +146,11 @@ namespace DG.Tweening
                 }
 #endif
 #if true // PHYSICS2D_MARKER
-                if (!rBodyFoundAndTweened && tweenRigidbody) {
+                if (!rBodyFoundAndTweened && tweenRigidbody)
+                {
                     Rigidbody2D rBody2D = target.GetComponent<Rigidbody2D>();
-                    if (rBody2D != null) {
+                    if (rBody2D != null)
+                    {
                         rBodyFoundAndTweened = true;
                         t = isLocal
                             ? rBody2D.DOLocalPath(path, duration, pathMode)
@@ -153,7 +158,8 @@ namespace DG.Tweening
                     }
                 }
 #endif
-                if (!rBodyFoundAndTweened) {
+                if (!rBodyFoundAndTweened)
+                {
                     t = isLocal
                         ? target.transform.DOLocalPath(path, duration, pathMode)
                         : target.transform.DOPath(path, duration, pathMode);
diff --git a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/Disable.anim b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/Disable.anim
new file mode 100644
index 00000000..4a7cadf1
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/Disable.anim
@@ -0,0 +1,104 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Disable
+  serializedVersion: 7
+  m_Legacy: 0
+  m_Compressed: 0
+  m_UseHighQualityCurve: 1
+  m_RotationCurves: []
+  m_CompressedRotationCurves: []
+  m_EulerCurves: []
+  m_PositionCurves: []
+  m_ScaleCurves: []
+  m_FloatCurves:
+  - serializedVersion: 2
+    curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Alpha
+    path: 
+    classID: 225
+    script: {fileID: 0}
+    flags: 0
+  m_PPtrCurves: []
+  m_SampleRate: 60
+  m_WrapMode: 0
+  m_Bounds:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 0, y: 0, z: 0}
+  m_ClipBindingConstant:
+    genericBindings:
+    - serializedVersion: 2
+      path: 0
+      attribute: 1574349066
+      script: {fileID: 0}
+      typeID: 225
+      customType: 0
+      isPPtrCurve: 0
+      isIntCurve: 0
+      isSerializeReferenceCurve: 0
+    pptrCurveMapping: []
+  m_AnimationClipSettings:
+    serializedVersion: 2
+    m_AdditiveReferencePoseClip: {fileID: 0}
+    m_AdditiveReferencePoseTime: 0
+    m_StartTime: 0
+    m_StopTime: 0
+    m_OrientationOffsetY: 0
+    m_Level: 0
+    m_CycleOffset: 0
+    m_HasAdditiveReferencePose: 0
+    m_LoopTime: 1
+    m_LoopBlend: 0
+    m_LoopBlendOrientation: 0
+    m_LoopBlendPositionY: 0
+    m_LoopBlendPositionXZ: 0
+    m_KeepOriginalOrientation: 0
+    m_KeepOriginalPositionY: 1
+    m_KeepOriginalPositionXZ: 0
+    m_HeightFromFeet: 0
+    m_Mirror: 0
+  m_EditorCurves:
+  - serializedVersion: 2
+    curve:
+      serializedVersion: 2
+      m_Curve:
+      - serializedVersion: 3
+        time: 0
+        value: 1
+        inSlope: 0
+        outSlope: 0
+        tangentMode: 136
+        weightedMode: 0
+        inWeight: 0
+        outWeight: 0
+      m_PreInfinity: 2
+      m_PostInfinity: 2
+      m_RotationOrder: 4
+    attribute: m_Alpha
+    path: 
+    classID: 225
+    script: {fileID: 0}
+    flags: 0
+  m_EulerEditorCurves: []
+  m_HasGenericRootTransform: 0
+  m_HasMotionFloatCurves: 0
+  m_Events: []
diff --git a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/Disable.anim.meta b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/Disable.anim.meta
new file mode 100644
index 00000000..3cc47eb3
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/Disable.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 25f1c28c99920124189b7173731c38b5
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 7400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OptionUI.prefab b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OptionUI.prefab
index f0028f33..4e3cbc67 100644
--- a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OptionUI.prefab
+++ b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OptionUI.prefab
@@ -528,6 +528,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 5f9054446a969bf4eaf7998f3ba23334, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  animator: {fileID: 8744505332349586225}
 --- !u!1 &2500436782395572584
 GameObject:
   m_ObjectHideFlags: 0
@@ -649,7 +650,7 @@ RectTransform:
   m_AnchorMin: {x: 1, y: 0}
   m_AnchorMax: {x: 1, y: 1}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 300, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0, y: 0.5}
 --- !u!114 &4478785627166277611
 MonoBehaviour:
diff --git a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/SelectBorder.controller b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/SelectBorder.controller
index 2bb69b9c..c014038d 100644
--- a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/SelectBorder.controller
+++ b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/SelectBorder.controller
@@ -1,5 +1,57 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
+--- !u!1101 &-6499513247890378152
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 2
+    m_ConditionEvent: active
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: -2169522966389634846}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.1
+  m_TransitionOffset: 0
+  m_ExitTime: 0.875
+  m_HasExitTime: 0
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
+--- !u!1102 &-2169522966389634846
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Disable
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions:
+  - {fileID: 8949275168816232509}
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 7400000, guid: 25f1c28c99920124189b7173731c38b5, type: 2}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!91 &9100000
 AnimatorController:
   m_ObjectHideFlags: 0
@@ -8,7 +60,19 @@ AnimatorController:
   m_PrefabAsset: {fileID: 0}
   m_Name: SelectBorder
   serializedVersion: 5
-  m_AnimatorParameters: []
+  m_AnimatorParameters:
+  - m_Name: active
+    m_Type: 4
+    m_DefaultFloat: 0
+    m_DefaultInt: 0
+    m_DefaultBool: 0
+    m_Controller: {fileID: 9100000}
+  - m_Name: reactive
+    m_Type: 9
+    m_DefaultFloat: 0
+    m_DefaultInt: 0
+    m_DefaultBool: 0
+    m_Controller: {fileID: 9100000}
   m_AnimatorLayers:
   - serializedVersion: 5
     m_Name: Base Layer
@@ -33,7 +97,10 @@ AnimatorStateMachine:
   m_ChildStates:
   - serializedVersion: 1
     m_State: {fileID: 5956899137579874003}
-    m_Position: {x: 340, y: 100, z: 0}
+    m_Position: {x: 380, y: 70, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: -2169522966389634846}
+    m_Position: {x: 350, y: 200, z: 0}
   m_ChildStateMachines: []
   m_AnyStateTransitions: []
   m_EntryTransitions: []
@@ -44,6 +111,31 @@ AnimatorStateMachine:
   m_ExitPosition: {x: 800, y: 120, z: 0}
   m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
   m_DefaultState: {fileID: 5956899137579874003}
+--- !u!1101 &1182501105974621518
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 1
+    m_ConditionEvent: reactive
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: 5956899137579874003}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0
+  m_TransitionOffset: 0
+  m_ExitTime: 0.875
+  m_HasExitTime: 0
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
 --- !u!1102 &5956899137579874003
 AnimatorState:
   serializedVersion: 6
@@ -51,10 +143,12 @@ AnimatorState:
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: DEFAULT
+  m_Name: Enable
   m_Speed: 1.6
   m_CycleOffset: 0
-  m_Transitions: []
+  m_Transitions:
+  - {fileID: -6499513247890378152}
+  - {fileID: 1182501105974621518}
   m_StateMachineBehaviours: []
   m_Position: {x: 50, y: 50, z: 0}
   m_IKOnFeet: 0
@@ -70,3 +164,28 @@ AnimatorState:
   m_MirrorParameter: 
   m_CycleOffsetParameter: 
   m_TimeParameter: 
+--- !u!1101 &8949275168816232509
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 1
+    m_ConditionEvent: active
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: 5956899137579874003}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.1
+  m_TransitionOffset: 0
+  m_ExitTime: 0.75
+  m_HasExitTime: 0
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
diff --git a/AxibugEmuOnline.Client/Assets/Script/App.cs b/AxibugEmuOnline.Client/Assets/Script/App.cs
index d320b32b..efb607a5 100644
--- a/AxibugEmuOnline.Client/Assets/Script/App.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/App.cs
@@ -1,27 +1,27 @@
-using AxibugEmuOnline.Client.Manager;
-using AxibugEmuOnline.Client.Network;
-using System.Collections;
-using System.IO;
-using System.Threading.Tasks;
-using UnityEngine;
-using UnityEngine.Networking;
-using static AxibugEmuOnline.Client.HttpAPI;
-using static AxibugEmuOnline.Client.Manager.LogManager;
-
-namespace AxibugEmuOnline.Client.ClientCore
-{
-    public static class App
-    {
-        public static string TokenStr;
-        public static string IP;
-        public static int Port;
-        public static LogManager log;
-        public static NetworkHelper network;
-        public static AppLogin login;
-        public static AppChat chat;
-        public static UserDataManager user;
-        //public static AppNetGame netgame;
-        public static AppEmu emu;
+using AxibugEmuOnline.Client.Manager;
+using AxibugEmuOnline.Client.Network;
+using System.Collections;
+using System.IO;
+using System.Threading.Tasks;
+using UnityEngine;
+using UnityEngine.Networking;
+using static AxibugEmuOnline.Client.HttpAPI;
+using static AxibugEmuOnline.Client.Manager.LogManager;
+
+namespace AxibugEmuOnline.Client.ClientCore
+{
+    public static class App
+    {
+        public static string TokenStr;
+        public static string IP;
+        public static int Port;
+        public static LogManager log;
+        public static NetworkHelper network;
+        public static AppLogin login;
+        public static AppChat chat;
+        public static UserDataManager user;
+        //public static AppNetGame netgame;
+        public static AppEmu emu;
         public static RomLib nesRomLib;
         public static HttpAPI httpAPI;
         public static CacheManager CacheMgr;
@@ -39,50 +39,50 @@ namespace AxibugEmuOnline.Client.ClientCore
 #else
         public static string PersistentDataPath => Application.persistentDataPath;
 #endif
-        public static void Init(Initer initer)
-        {
-            settings = new AppSettings();
-
-            log = new LogManager();
-            LogManager.OnLog += OnNoSugarNetLog;
-            network = new NetworkHelper();
-            login = new AppLogin();
-            chat = new AppChat();
-            user = new UserDataManager();
-            emu = new AppEmu();
-            //netgame = new AppNetGame();
-            httpAPI = new HttpAPI();
-            nesRomLib = new RomLib(EnumPlatform.NES);
-            CacheMgr = new CacheManager();
+        public static void Init(Initer initer)
+        {
+            settings = new AppSettings();
+
+            log = new LogManager();
+            LogManager.OnLog += OnNoSugarNetLog;
+            network = new NetworkHelper();
+            login = new AppLogin();
+            chat = new AppChat();
+            user = new UserDataManager();
+            emu = new AppEmu();
+            //netgame = new AppNetGame();
+            httpAPI = new HttpAPI();
+            nesRomLib = new RomLib(EnumPlatform.NES);
+            CacheMgr = new CacheManager();
             roomMgr = new AppRoom();
             share = new AppShare();
             filter = new FilterManager(initer.m_filterVolume, initer.m_filterPreview, initer.m_xmbBg);
-            var go = new GameObject("[AppAxibugEmuOnline]");
-            GameObject.DontDestroyOnLoad(go);
-            tickLoop = go.AddComponent<TickLoop>();
-            coRunner = go.AddComponent<CoroutineRunner>();
-
+            var go = new GameObject("[AppAxibugEmuOnline]");
+            GameObject.DontDestroyOnLoad(go);
+            tickLoop = go.AddComponent<TickLoop>();
+            coRunner = go.AddComponent<CoroutineRunner>();
+
             if (UnityEngine.Application.platform == RuntimePlatform.PSP2)
-            {
-                //PSV 等平台需要手动创建目录
-                PersistentDataPathDir();
+            {
+                //PSV 等平台需要手动创建目录
+                PersistentDataPathDir();
             }
 
-            var importNode = GameObject.Find("IMPORTENT");
-            if (importNode != null) GameObject.DontDestroyOnLoad(importNode);
-
-            StartCoroutine(AppTickFlow());
-            RePullNetInfo();
-        }
-
+            var importNode = GameObject.Find("IMPORTENT");
+            if (importNode != null) GameObject.DontDestroyOnLoad(importNode);
+
+            StartCoroutine(AppTickFlow());
+            RePullNetInfo();
+        }
+
         private static void PersistentDataPathDir()
-        {
+        {
             if (!Directory.Exists(PersistentDataPath))
-            {
-                Directory.CreateDirectory(PersistentDataPath);
-            }
-        }
-
+            {
+                Directory.CreateDirectory(PersistentDataPath);
+            }
+        }
+
         private static IEnumerator AppTickFlow()
         {
             while (true)
@@ -93,7 +93,7 @@ namespace AxibugEmuOnline.Client.ClientCore
         }
 
         public static void RePullNetInfo()
-        {
+        {
             StartCoroutine(StartNetInit());
         }
 
@@ -103,12 +103,12 @@ namespace AxibugEmuOnline.Client.ClientCore
                 yield break;
 
             int platform = 0;
-            bool bTest = false;
-            if (bTest)
-            {
-                yield return null;
-                Connect("192.168.0.47", 10492);
-                yield break;
+            bool bTest = false;
+            if (bTest)
+            {
+                yield return null;
+                Connect("192.168.0.47", 10492);
+                yield break;
             }
 
             UnityWebRequest request = UnityWebRequest.Get($"{App.httpAPI.WebSiteApi}/CheckStandInfo?platform={platform}&version={Application.version}");
@@ -138,43 +138,43 @@ namespace AxibugEmuOnline.Client.ClientCore
         public static Coroutine StartCoroutine(IEnumerator itor)
         {
             return coRunner.StartCoroutine(itor);
-        }
-
+        }
+
         public static void StopCoroutine(Coroutine cor)
         {
             coRunner.StopCoroutine(cor);
-        }
-
-        public static void Connect(string IP, int port)
-        {
+        }
+
+        public static void Connect(string IP, int port)
+        {
             Task task = new Task(() =>
             {
                 network.Init(IP, port);
-            });
-            task.Start();
-        }
-
-        public static void Close()
-        {
-            App.log.Info("停止");
-        }
-        static void OnNoSugarNetLog(int LogLevel, string msg)
+            });
+            task.Start();
+        }
+
+        public static void Close()
         {
-            E_LogType logType = (E_LogType)LogLevel;
+            App.log.Info("停止");
+        }
+        static void OnNoSugarNetLog(int LogLevel, string msg)
+        {
+            E_LogType logType = (E_LogType)LogLevel;
             switch (logType)
-            {
+            {
                 case E_LogType.Debug:
                 case E_LogType.Info:
-                    Debug.Log("[AxiEmu]:" + msg);
+                    Debug.Log("[AxiEmu]:" + msg);
                     break;
                 case E_LogType.Warning:
-                    Debug.LogWarning("[AxiEmu]:" + msg);
+                    Debug.LogWarning("[AxiEmu]:" + msg);
                     break;
                 case E_LogType.Error:
-                    Debug.LogError("[AxiEmu]:" + msg);
-                    break;
-            }
-        }
-
-    }
+                    Debug.LogError("[AxiEmu]:" + msg);
+                    break;
+            }
+        }
+
+    }
 }
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Script/Event/EventInvoker.cs b/AxibugEmuOnline.Client/Assets/Script/Event/EventInvoker.cs
index af3d35c4..0aa01946 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Event/EventInvoker.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Event/EventInvoker.cs
@@ -1,7 +1,3 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
 namespace AxibugEmuOnline.Client
 {
     public static class EventInvoker
diff --git a/AxibugEmuOnline.Client/Assets/Script/Filter/FixingPixelArtGrille/FixingPixelArtGrille.cs b/AxibugEmuOnline.Client/Assets/Script/Filter/FixingPixelArtGrille/FixingPixelArtGrille.cs
index 10416ae6..70bc32a1 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Filter/FixingPixelArtGrille/FixingPixelArtGrille.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Filter/FixingPixelArtGrille/FixingPixelArtGrille.cs
@@ -1,6 +1,4 @@
 using AxibugEmuOnline.Client;
-using AxibugEmuOnline.Client.ClientCore;
-using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.Rendering.PostProcessing;
 
diff --git a/AxibugEmuOnline.Client/Assets/Script/Filter/MattiasCRT/MattiasCRT.cs b/AxibugEmuOnline.Client/Assets/Script/Filter/MattiasCRT/MattiasCRT.cs
index 27b16686..52becd6c 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Filter/MattiasCRT/MattiasCRT.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Filter/MattiasCRT/MattiasCRT.cs
@@ -6,7 +6,7 @@ using UnityEngine.Rendering.PostProcessing;
 [PostProcess(typeof(MattiasCRTRenderer), PostProcessEvent.BeforeStack, "Filter/MattiasCRT")]
 public sealed class MattiasCRT : FilterEffect
 {
-    public override string Name => nameof(MattiasCRT); 
+    public override string Name => nameof(MattiasCRT);
 }
 
 public sealed class MattiasCRTRenderer : PostProcessEffectRenderer<MattiasCRT>
diff --git a/AxibugEmuOnline.Client/Assets/Script/IkeyMapperChanger/CommandChanger.cs b/AxibugEmuOnline.Client/Assets/Script/IkeyMapperChanger/CommandChanger.cs
index a004f713..dbc6a273 100644
--- a/AxibugEmuOnline.Client/Assets/Script/IkeyMapperChanger/CommandChanger.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/IkeyMapperChanger/CommandChanger.cs
@@ -1,7 +1,4 @@
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace AxibugEmuOnline.Client
+namespace AxibugEmuOnline.Client
 {
     public abstract class CommandChanger : IKeyMapperChanger
     {
diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/AppChat.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/AppChat.cs
index c3b26344..029d76f7 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Manager/AppChat.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Manager/AppChat.cs
@@ -3,7 +3,6 @@ using AxibugEmuOnline.Client.Common;
 using AxibugEmuOnline.Client.Event;
 using AxibugEmuOnline.Client.Network;
 using AxibugProtobuf;
-using System;
 
 namespace AxibugEmuOnline.Client.Manager
 {
diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs
index 5eca81cf..1b01f526 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs
@@ -1,9 +1,9 @@
-using AxibugEmuOnline.Client.ClientCore;
-using AxibugEmuOnline.Client.Event;
-using UnityEngine;
-
-namespace AxibugEmuOnline.Client.Manager
-{
+using AxibugEmuOnline.Client.ClientCore;
+using AxibugEmuOnline.Client.Event;
+using UnityEngine;
+
+namespace AxibugEmuOnline.Client.Manager
+{
     public class AppEmu
     {
         /// <summary>
@@ -58,8 +58,8 @@ namespace AxibugEmuOnline.Client.Manager
             InGameUI.Instance.Show(romFile, m_emuCore);
 
             m_emuCore.SetupScheme();
-        }
-
+        }
+
         public void StopGame()
         {
             if (m_emuCore.IsNull()) return;
@@ -76,5 +76,5 @@ namespace AxibugEmuOnline.Client.Manager
 
             m_emuCore.DoReset();
         }
-    }
-}
+    }
+}
diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/AppLogin.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/AppLogin.cs
index 099c2b81..1286aaaa 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Manager/AppLogin.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Manager/AppLogin.cs
@@ -74,7 +74,7 @@ namespace AxibugEmuOnline.Client.Manager
         long TestFrameID = 0;
         void TestEmuUpdate()
         {
-            
+
         }
         #endregion
 
diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/FilterManager.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/FilterManager.cs
index abfbfb4b..1f61f48c 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Manager/FilterManager.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Manager/FilterManager.cs
@@ -1,5 +1,4 @@
-using DG.Tweening;
-using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using UnityEngine;
diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/UserDataManager.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/UserDataManager.cs
index e7a33990..b308e367 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Manager/UserDataManager.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Manager/UserDataManager.cs
@@ -5,8 +5,6 @@ using AxibugEmuOnline.Client.Network;
 using AxibugProtobuf;
 using System.Collections.Generic;
 using System.Linq;
-using UnityEngine.EventSystems;
-using static AxibugEmuOnline.Client.ClientCore.RomDB;
 
 namespace AxibugEmuOnline.Client.Manager
 {
diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesControllerMapper.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesControllerMapper.cs
index a7a5c164..9e231f1a 100644
--- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesControllerMapper.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesControllerMapper.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Text;
-using UnityEngine;
+using UnityEngine;
 using VirtualNes.Core;
 
 namespace AxibugEmuOnline.Client
diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs
index 495cf092..4399de22 100644
--- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs
@@ -1,11 +1,8 @@
-using AxibugEmuOnline.Client.Common;
 using System;
 using System.Runtime.InteropServices;
-using System.Text;
 using UnityEngine;
 using UnityEngine.UI;
 using VirtualNes.Core;
-using static UnityEngine.UI.CanvasScaler;
 
 namespace AxibugEmuOnline.Client
 {
diff --git a/AxibugEmuOnline.Client/Assets/Script/Network/NetworkHelper.cs b/AxibugEmuOnline.Client/Assets/Script/Network/NetworkHelper.cs
index 0d2e358a..901e6982 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Network/NetworkHelper.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Network/NetworkHelper.cs
@@ -4,7 +4,6 @@ using HaoYueNet.ClientNetworkNet.Standard2;
 using System;
 using System.Net.Sockets;
 using System.Threading;
-using System.Threading.Tasks;
 
 namespace AxibugEmuOnline.Client.Network
 {
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/AlphaWraper.cs b/AxibugEmuOnline.Client/Assets/Script/UI/AlphaWraper.cs
index 8a1d98ba..ddb40b7b 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/AlphaWraper.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/AlphaWraper.cs
@@ -1,8 +1,6 @@
 using DG.Tweening;
 using DG.Tweening.Core;
 using DG.Tweening.Plugins.Options;
-using System.Collections;
-using System.Collections.Generic;
 using UnityEngine;
 
 namespace AxibugEmuOnline.Client
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/BgSettingsUI/GlobalFilterListMenuItem.cs b/AxibugEmuOnline.Client/Assets/Script/UI/BgSettingsUI/GlobalFilterListMenuItem.cs
index 5768a158..2f0a050e 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/BgSettingsUI/GlobalFilterListMenuItem.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/BgSettingsUI/GlobalFilterListMenuItem.cs
@@ -18,7 +18,7 @@ namespace AxibugEmuOnline.Client
         {
             App.filter.ShutDownFilterPreview();
             App.filter.ShutDownFilter();
-            
+
             return base.OnExitItem();
         }
 
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/CommandDispatcher/CommandDispatcher.cs b/AxibugEmuOnline.Client/Assets/Script/UI/CommandDispatcher/CommandDispatcher.cs
index 858bac47..43a8a8b6 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/CommandDispatcher/CommandDispatcher.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/CommandDispatcher/CommandDispatcher.cs
@@ -1,9 +1,5 @@
-using AxibugEmuOnline.Client.ClientCore;
-using System;
 using System.Collections.Generic;
 using UnityEngine;
-using UnityEngine.EventSystems;
-using UnityEngine.UI;
 
 namespace AxibugEmuOnline.Client
 {
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/CommandDispatcher/CommandExcuter.cs b/AxibugEmuOnline.Client/Assets/Script/UI/CommandDispatcher/CommandExcuter.cs
index f52b45c3..0da7fd4e 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/CommandDispatcher/CommandExcuter.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/CommandDispatcher/CommandExcuter.cs
@@ -1,6 +1,4 @@
 using AxibugEmuOnline.Client.UI;
-using System.Collections;
-using System.Collections.Generic;
 using UnityEngine;
 
 namespace AxibugEmuOnline.Client
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI.cs b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI.cs
index d74f62dc..77eedfcc 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI.cs
@@ -38,7 +38,7 @@ namespace AxibugEmuOnline.Client
 
             m_stepPerformer = new StepPerformer(this);
 
-            //menus.Add(new InGameUI_FilterSetting(this));
+            menus.Add(new InGameUI_FilterSetting(this));
             menus.Add(new InGameUI_Reset(this));
             menus.Add(new InGameUI_SaveState(this));
             menus.Add(new InGameUI_LoadState(this));
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs
index 4197be4e..563c4716 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_FilterSetting.cs
@@ -1,7 +1,6 @@
 using AxibugEmuOnline.Client.ClientCore;
 using System.Collections.Generic;
 using System.Linq;
-using UnityEngine;
 using static AxibugEmuOnline.Client.FilterManager;
 
 namespace AxibugEmuOnline.Client
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_Reset.cs b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_Reset.cs
index 872c793a..8424dec8 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_Reset.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_Reset.cs
@@ -1,8 +1,4 @@
 using AxibugEmuOnline.Client.ClientCore;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
-using System.Security.Cryptography;
-using System.Text;
 
 namespace AxibugEmuOnline.Client
 {
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_SaveState.cs b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_SaveState.cs
index f20c4970..d435ca32 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_SaveState.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/InGameUI/InGameUI_SaveState.cs
@@ -1,8 +1,5 @@
 using AxibugEmuOnline.Client.ClientCore;
 using System.Diagnostics;
-using System.Runtime.InteropServices;
-using System.Security.Cryptography;
-using System.Text;
 
 namespace AxibugEmuOnline.Client
 {
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/GameObjectPool.cs b/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/GameObjectPool.cs
index 1cf4dc44..fd44a4fd 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/GameObjectPool.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/GameObjectPool.cs
@@ -1,4 +1,3 @@
-using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/ItemPresentEditor/ItemPresentEditor.cs b/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/ItemPresentEditor/ItemPresentEditor.cs
index 1652b81e..2d4e2897 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/ItemPresentEditor/ItemPresentEditor.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/ItemPresentEditor/ItemPresentEditor.cs
@@ -1,6 +1,4 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEditor;
+using UnityEditor;
 using UnityEditor.UI;
 using UnityEngine;
 
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/ItemProxy.cs b/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/ItemProxy.cs
index 6f602186..58f857e3 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/ItemProxy.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/ItemPresent/ItemProxy.cs
@@ -1,4 +1,3 @@
-using System;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI.cs b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI.cs
index 74d6094c..620d8a90 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI.cs
@@ -1,7 +1,6 @@
 using DG.Tweening;
 using System;
 using System.Collections.Generic;
-using System.Linq;
 using UnityEngine;
 
 namespace AxibugEmuOnline.Client
@@ -71,6 +70,7 @@ namespace AxibugEmuOnline.Client
 
         protected override void Update()
         {
+            SelectBorder.Active = Enable;
             UpdateMenuState();
 
             base.Update();
@@ -177,6 +177,7 @@ namespace AxibugEmuOnline.Client
 
             var itemUIRect = optionUI_MenuItem.transform as RectTransform;
             SelectBorder.Target = itemUIRect;
+            SelectBorder.RefreshPosition();
 
             if (!m_bPoped)
             {
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/OverlayUI/OverlayUI.cs b/AxibugEmuOnline.Client/Assets/Script/UI/OverlayUI/OverlayUI.cs
index 083ead25..957f0d12 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/OverlayUI/OverlayUI.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/OverlayUI/OverlayUI.cs
@@ -1,6 +1,4 @@
 using DG.Tweening;
-using System.Collections;
-using System.Collections.Generic;
 using UnityEngine;
 
 namespace AxibugEmuOnline.Client
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/RoomUI/RoomItem.cs b/AxibugEmuOnline.Client/Assets/Script/UI/RoomUI/RoomItem.cs
index 9cd7a5c9..274b544c 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/RoomUI/RoomItem.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/RoomUI/RoomItem.cs
@@ -2,7 +2,6 @@ using AxibugEmuOnline.Client.ClientCore;
 using AxibugEmuOnline.Client.Event;
 using AxibugEmuOnline.Client.UI;
 using AxibugProtobuf;
-using System;
 using UnityEngine;
 using UnityEngine.UI;
 
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/Selector.cs b/AxibugEmuOnline.Client/Assets/Script/UI/Selector.cs
index 2fa6b6db..a982a089 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/Selector.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/Selector.cs
@@ -1,4 +1,4 @@
-using DG.Tweening;
+using DG.Tweening;
 using DG.Tweening.Core;
 using DG.Tweening.Plugins.Options;
 using UnityEngine;
@@ -7,6 +7,8 @@ namespace AxibugEmuOnline.Client
 {
     public class Selector : MonoBehaviour
     {
+        [SerializeField]
+        private Animator animator;
         private RectTransform m_rect => transform as RectTransform;
 
         private RectTransform m_target;
@@ -21,15 +23,13 @@ namespace AxibugEmuOnline.Client
 
                 m_target = value;
 
-                //����ѡ���α�Ķ���
-                gameObject.SetActive(false);
-                gameObject.SetActive(true);
-
                 var itemUIRect = m_target.transform as RectTransform;
                 m_rect.pivot = itemUIRect.pivot;
                 m_rect.sizeDelta = itemUIRect.rect.size;
                 m_rect.SetAsLastSibling();
 
+                animator.SetTrigger("reactive");
+
                 if (m_trackTween != null)
                 {
                     m_trackTween.Kill();
@@ -40,15 +40,34 @@ namespace AxibugEmuOnline.Client
             }
         }
 
+        private bool m_active;
+        public bool Active
+        {
+            get => m_active;
+            set
+            {
+                if (m_active == value) return;
+                m_active = value;
+
+                animator.SetBool("active", value);
+            }
+        }
+
+        public void RefreshPosition()
+        {
+            if (Target != null)
+            {
+                m_rect.position = Target.position;
+            }
+        }
+
         private void LateUpdate()
         {
-            if (m_trackTween != null)
+            if (m_trackTween != null && m_trackTween.endValue != Target.position)
             {
-                m_trackTween.endValue = Target.position;
+                m_trackTween.ChangeEndValue(Target.position, true);
             }
             if (Target == null) return;
-
-            m_rect.position = Target.position;
         }
     }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/UITool.cs b/AxibugEmuOnline.Client/Assets/Script/UI/UITool.cs
index 9ea68bf2..fbeae120 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/UITool.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/UITool.cs
@@ -1,4 +1,3 @@
-using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/VirtualSubMenuItem.cs b/AxibugEmuOnline.Client/Assets/Script/UI/VirtualSubMenuItem.cs
index 859d9dec..9721a825 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/VirtualSubMenuItem.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/VirtualSubMenuItem.cs
@@ -20,7 +20,7 @@ namespace AxibugEmuOnline.Client
             base.Awake();
 
             RomGroupRoot.gameObject.SetActive(false);
-            RomGroupRoot.alpha = 0;           
+            RomGroupRoot.alpha = 0;
         }
 
         public override void SetSelectState(bool selected)
@@ -58,7 +58,7 @@ namespace AxibugEmuOnline.Client
             thirdMenuGroup.itemGroup.Clear();
 
             RefreshUI();
-            
+
             if (SubMenuItemGroup != null) SubMenuItemGroup.SetSelect(true);
 
             return true;
diff --git a/AxibugEmuOnline.Client/Assets/Script/Utility.cs b/AxibugEmuOnline.Client/Assets/Script/Utility.cs
index 212a7164..86d005eb 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Utility.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Utility.cs
@@ -1,7 +1,6 @@
 using AxibugEmuOnline.Client.ClientCore;
 using AxibugProtobuf;
 using System;
-using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
@@ -42,7 +41,7 @@ namespace AxibugEmuOnline.Client
         {
             if (s_RomFileCahcesInRoomInfo.TryGetValue(roomInfo.GameRomID, out RomFile romFile))
             {
-                callback.Invoke(roomInfo,romFile);
+                callback.Invoke(roomInfo, romFile);
                 return;
             }
             switch (platform)
@@ -53,8 +52,8 @@ namespace AxibugEmuOnline.Client
                         RomFile romFile = new RomFile(EnumPlatform.NES, 0, 0);
                         romFile.SetWebData(romWebData);
                         s_RomFileCahcesInRoomInfo[roomInfo.GameRomID] = romFile;
-                        
-                        callback.Invoke(roomInfo,romFile);
+
+                        callback.Invoke(roomInfo, romFile);
                     }));
                     break;
             }

From d6fa9772b9a62b28ba77121e12a2d1822f9814f9 Mon Sep 17 00:00:00 2001
From: ALIENJACK <alienjack@foxmail.com>
Date: Thu, 5 Dec 2024 01:31:28 +0800
Subject: [PATCH 3/3] =?UTF-8?q?=E4=BE=A7=E8=BE=B9=E6=A0=8FUI=E5=A2=9E?=
 =?UTF-8?q?=E5=8A=A0=E5=8F=AF=E7=BC=96=E8=BE=91=E5=80=BC=E7=9A=84=E9=80=89?=
 =?UTF-8?q?=E9=A1=B9=E7=B1=BB=E5=9E=8B=EF=BC=8C=E6=BB=A4=E9=95=9C=E9=A2=84?=
 =?UTF-8?q?=E8=AE=BE=E7=8E=B0=E5=9C=A8=E5=B7=B2=E6=94=AF=E6=8C=81=E5=8F=82?=
 =?UTF-8?q?=E6=95=B0=E7=9A=84=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Resources/UIPrefabs/OptionUI.prefab       | 1241 +++++++++++++++++
 .../Assets/Script/Filter/FilterEffect.cs      |   33 +-
 .../Assets/Script/Manager/FilterManager.cs    |   63 +-
 .../Script/UI/BgSettingsUI/UI_FilterItem.cs   |   39 +-
 .../Assets/Script/UI/OptionUI/OptionUI.cs     |   55 +-
 .../Script/UI/OptionUI/OptionUI_MenuItem.cs   |    2 +
 .../UI/OptionUI/OptionUI_ValueEditItem.cs     |   69 +
 .../OptionUI/OptionUI_ValueEditItem.cs.meta   |   11 +
 .../OptionUI_ValueEditItem_EnumEdit.cs        |   56 +
 .../OptionUI_ValueEditItem_EnumEdit.cs.meta   |    2 +
 .../OptionUI_ValueEditItem_FloatEdit.cs       |   53 +
 .../OptionUI_ValueEditItem_FloatEdit.cs.meta  |    2 +
 12 files changed, 1582 insertions(+), 44 deletions(-)
 create mode 100644 AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem.cs
 create mode 100644 AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem.cs.meta
 create mode 100644 AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_EnumEdit.cs
 create mode 100644 AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_EnumEdit.cs.meta
 create mode 100644 AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_FloatEdit.cs
 create mode 100644 AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_FloatEdit.cs.meta

diff --git a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OptionUI.prefab b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OptionUI.prefab
index 4e3cbc67..712e88c1 100644
--- a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OptionUI.prefab
+++ b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/OptionUI.prefab
@@ -1,5 +1,103 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
+--- !u!1 &197910204715683756
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3877041774025625573}
+  - component: {fileID: 4761092020446986678}
+  - component: {fileID: 6349204039935213934}
+  - component: {fileID: 1930203863893015022}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3877041774025625573
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 197910204715683756}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2450201408575734812}
+  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: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4761092020446986678
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 197910204715683756}
+  m_CullTransparentMesh: 1
+--- !u!114 &6349204039935213934
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 197910204715683756}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 33a3bdf8f6bd1ec4eba7c4bc58183212, type: 3}
+    m_FontSize: 26
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 1
+    m_MaxSize: 185
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: '[ValueMenu]'
+--- !u!114 &1930203863893015022
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 197910204715683756}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0848bff101191904ead4bb831f7084db, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_BlurFactor: 1
+  m_Style: 1
+  m_AdditionalShadows: []
+  m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
+  m_EffectDistance: {x: 1.5, y: -1.5}
+  m_UseGraphicAlpha: 1
 --- !u!1 &641655917557919365
 GameObject:
   m_ObjectHideFlags: 0
@@ -96,6 +194,102 @@ MonoBehaviour:
   m_FlexibleWidth: 1
   m_FlexibleHeight: -1
   m_LayoutPriority: 1
+--- !u!1 &663717611383481067
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1609320592060400513}
+  - component: {fileID: 7860273967724122996}
+  - component: {fileID: 1062489471918314902}
+  - component: {fileID: 6374434662818679556}
+  m_Layer: 5
+  m_Name: Icon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1609320592060400513
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 663717611383481067}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2450201408575734812}
+  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: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7860273967724122996
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 663717611383481067}
+  m_CullTransparentMesh: 1
+--- !u!114 &1062489471918314902
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 663717611383481067}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  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
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &6374434662818679556
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 663717611383481067}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: 40
+  m_PreferredHeight: 40
+  m_FlexibleWidth: -1
+  m_FlexibleHeight: -1
+  m_LayoutPriority: 1
 --- !u!1 &782102846085628909
 GameObject:
   m_ObjectHideFlags: 0
@@ -529,6 +723,77 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   animator: {fileID: 8744505332349586225}
+--- !u!1 &2471254561136382013
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 816049057894123782}
+  - component: {fileID: 1792874459052106251}
+  - component: {fileID: 3614321873420207159}
+  m_Layer: 5
+  m_Name: EnumEdit
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &816049057894123782
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2471254561136382013}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 3923554087608668260}
+  m_Father: {fileID: 278706555072840209}
+  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: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1792874459052106251
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2471254561136382013}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: -1
+  m_PreferredHeight: 50
+  m_FlexibleWidth: -1
+  m_FlexibleHeight: -1
+  m_LayoutPriority: 1
+--- !u!114 &3614321873420207159
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2471254561136382013}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: ef1018f09e7c5b049b75128ee308d372, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  txt_value: {fileID: 882902782535747463}
 --- !u!1 &2500436782395572584
 GameObject:
   m_ObjectHideFlags: 0
@@ -610,6 +875,105 @@ MonoBehaviour:
   m_MenuNameTxt: {fileID: 1824253632728291860}
   m_Icon: {fileID: 394891843266770919}
   ExpandFlag: {fileID: 1501213187178026014}
+--- !u!1 &4124172888520656882
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3923554087608668260}
+  - component: {fileID: 8726940611779585913}
+  m_Layer: 5
+  m_Name: content
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3923554087608668260
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4124172888520656882}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 6100013163502236362}
+  m_Father: {fileID: 816049057894123782}
+  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 &8726940611779585913
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4124172888520656882}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 0
+    m_Right: 0
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 0
+  m_Spacing: 5
+  m_ChildForceExpandWidth: 1
+  m_ChildForceExpandHeight: 1
+  m_ChildControlWidth: 1
+  m_ChildControlHeight: 1
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
+--- !u!1 &4418047983921236589
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 839073477422163140}
+  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 &839073477422163140
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4418047983921236589}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 368344292915322445}
+  m_Father: {fileID: 7336691093202081882}
+  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!1 &4478785627166277609
 GameObject:
   m_ObjectHideFlags: 0
@@ -644,6 +1008,7 @@ RectTransform:
   m_Children:
   - {fileID: 8581099496228509946}
   - {fileID: 2780569438310375802}
+  - {fileID: 278706555072840209}
   - {fileID: 2404013603202822047}
   m_Father: {fileID: 0}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -667,6 +1032,7 @@ MonoBehaviour:
   MenuRoot: {fileID: 4478785627166277610}
   SelectBorder: {fileID: 7857863493876124730}
   TEMPLATE_EXECUTEITEM: {fileID: 3721725547312714320}
+  TEMPLATE_VALUEEDITITEM: {fileID: 2621485483361375335}
 --- !u!114 &7033441668005100640
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -727,6 +1093,392 @@ MonoBehaviour:
   m_FlexibleWidth: -1
   m_FlexibleHeight: -1
   m_LayoutPriority: 1
+--- !u!1 &4565892069299376824
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 758531668636581813}
+  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 &758531668636581813
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4565892069299376824}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 8431569032797679710}
+  m_Father: {fileID: 7336691093202081882}
+  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.0000153, y: 0}
+  m_SizeDelta: {x: -20, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &5174902406667317058
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 278706555072840209}
+  - component: {fileID: 2621485483361375335}
+  - component: {fileID: 4314371315188452187}
+  - component: {fileID: 3305626545226455955}
+  m_Layer: 5
+  m_Name: ValueEditItem_Template
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &278706555072840209
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5174902406667317058}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 2450201408575734812}
+  - {fileID: 7216060871118576844}
+  - {fileID: 816049057894123782}
+  m_Father: {fileID: 4478785627166277610}
+  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: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2621485483361375335
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5174902406667317058}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: deae682aaf23cab458cba1b12cd3a1f7, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_MenuNameTxt: {fileID: 6349204039935213934}
+  m_Icon: {fileID: 1062489471918314902}
+  com_floatEdit: {fileID: 3979886008433050043}
+  com_enumEdit: {fileID: 3614321873420207159}
+--- !u!114 &4314371315188452187
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5174902406667317058}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 20
+    m_Right: 10
+    m_Top: 10
+    m_Bottom: 10
+  m_ChildAlignment: 0
+  m_Spacing: 5
+  m_ChildForceExpandWidth: 1
+  m_ChildForceExpandHeight: 0
+  m_ChildControlWidth: 1
+  m_ChildControlHeight: 1
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
+--- !u!114 &3305626545226455955
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5174902406667317058}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: -1
+  m_PreferredHeight: -1
+  m_FlexibleWidth: -1
+  m_FlexibleHeight: -1
+  m_LayoutPriority: 1
+--- !u!1 &5894141955990945432
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2450201408575734812}
+  - component: {fileID: 6023196883469018230}
+  m_Layer: 5
+  m_Name: Header
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2450201408575734812
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5894141955990945432}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 1609320592060400513}
+  - {fileID: 3877041774025625573}
+  m_Father: {fileID: 278706555072840209}
+  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: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &6023196883469018230
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5894141955990945432}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 0
+    m_Right: 0
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 3
+  m_Spacing: 12
+  m_ChildForceExpandWidth: 0
+  m_ChildForceExpandHeight: 0
+  m_ChildControlWidth: 1
+  m_ChildControlHeight: 1
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
+--- !u!1 &6312116949113707702
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7216060871118576844}
+  - component: {fileID: 2814991476448031351}
+  - component: {fileID: 3979886008433050043}
+  m_Layer: 5
+  m_Name: FloatEdit
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7216060871118576844
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6312116949113707702}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 3411987631237892165}
+  m_Father: {fileID: 278706555072840209}
+  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: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2814991476448031351
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6312116949113707702}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: -1
+  m_PreferredHeight: 50
+  m_FlexibleWidth: -1
+  m_FlexibleHeight: -1
+  m_LayoutPriority: 1
+--- !u!114 &3979886008433050043
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6312116949113707702}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 8c9e9868e38e8ea44a0dad03b987cd73, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  slider: {fileID: 6489571631904078165}
+  txt_value: {fileID: 6176548475786947694}
+--- !u!1 &6669948312920191200
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7336691093202081882}
+  - component: {fileID: 6489571631904078165}
+  - component: {fileID: 3374260299666839081}
+  m_Layer: 5
+  m_Name: Slider
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7336691093202081882
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6669948312920191200}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 9188465998620569872}
+  - {fileID: 758531668636581813}
+  - {fileID: 839073477422163140}
+  m_Father: {fileID: 3411987631237892165}
+  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: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &6489571631904078165
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6669948312920191200}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 0
+  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_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, 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_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 5663436025380392551}
+  m_FillRect: {fileID: 8431569032797679710}
+  m_HandleRect: {fileID: 368344292915322445}
+  m_Direction: 0
+  m_MinValue: 0
+  m_MaxValue: 1
+  m_WholeNumbers: 0
+  m_Value: 0
+  m_OnValueChanged:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!114 &3374260299666839081
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6669948312920191200}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: -1
+  m_PreferredHeight: -1
+  m_FlexibleWidth: 20
+  m_FlexibleHeight: -1
+  m_LayoutPriority: 1
 --- !u!1 &6998597834321643812
 GameObject:
   m_ObjectHideFlags: 0
@@ -825,3 +1577,492 @@ MonoBehaviour:
   m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
   m_EffectDistance: {x: 1.5, y: -1.5}
   m_UseGraphicAlpha: 1
+--- !u!1 &8045610840842517781
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 368344292915322445}
+  - component: {fileID: 2285457357903007277}
+  - component: {fileID: 5663436025380392551}
+  m_Layer: 5
+  m_Name: Handle
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &368344292915322445
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8045610840842517781}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 839073477422163140}
+  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!222 &2285457357903007277
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8045610840842517781}
+  m_CullTransparentMesh: 1
+--- !u!114 &5663436025380392551
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8045610840842517781}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  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
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8171039204203639432
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3411987631237892165}
+  - component: {fileID: 8534996973105061084}
+  m_Layer: 5
+  m_Name: content
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3411987631237892165
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8171039204203639432}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 7336691093202081882}
+  - {fileID: 1486903153852188972}
+  m_Father: {fileID: 7216060871118576844}
+  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 &8534996973105061084
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8171039204203639432}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 0
+    m_Right: 0
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 0
+  m_Spacing: 5
+  m_ChildForceExpandWidth: 1
+  m_ChildForceExpandHeight: 1
+  m_ChildControlWidth: 1
+  m_ChildControlHeight: 1
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
+--- !u!1 &8424237890540861109
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 9188465998620569872}
+  - component: {fileID: 1544250115504974858}
+  - component: {fileID: 4255075450120709843}
+  m_Layer: 5
+  m_Name: Background
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &9188465998620569872
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8424237890540861109}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7336691093202081882}
+  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!222 &1544250115504974858
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8424237890540861109}
+  m_CullTransparentMesh: 1
+--- !u!114 &4255075450120709843
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8424237890540861109}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  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
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8505862672145461347
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8431569032797679710}
+  - component: {fileID: 5338290108124800152}
+  - component: {fileID: 51848086538987462}
+  m_Layer: 5
+  m_Name: Fill
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8431569032797679710
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8505862672145461347}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 758531668636581813}
+  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!222 &5338290108124800152
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8505862672145461347}
+  m_CullTransparentMesh: 1
+--- !u!114 &51848086538987462
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8505862672145461347}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  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
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8608736886725017457
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1486903153852188972}
+  - component: {fileID: 7497419100168238325}
+  - component: {fileID: 6176548475786947694}
+  - component: {fileID: 5172613673109503612}
+  m_Layer: 5
+  m_Name: value
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1486903153852188972
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8608736886725017457}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 3411987631237892165}
+  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: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7497419100168238325
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8608736886725017457}
+  m_CullTransparentMesh: 1
+--- !u!114 &6176548475786947694
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8608736886725017457}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 33a3bdf8f6bd1ec4eba7c4bc58183212, type: 3}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: 99
+--- !u!114 &5172613673109503612
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8608736886725017457}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: -1
+  m_PreferredHeight: -1
+  m_FlexibleWidth: 1
+  m_FlexibleHeight: -1
+  m_LayoutPriority: 1
+--- !u!1 &8884391103430529053
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6100013163502236362}
+  - component: {fileID: 88244861463061753}
+  - component: {fileID: 882902782535747463}
+  - component: {fileID: 7627463212103394575}
+  m_Layer: 5
+  m_Name: value
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &6100013163502236362
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8884391103430529053}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 3923554087608668260}
+  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: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &88244861463061753
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8884391103430529053}
+  m_CullTransparentMesh: 1
+--- !u!114 &882902782535747463
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8884391103430529053}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 33a3bdf8f6bd1ec4eba7c4bc58183212, type: 3}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: ENUMNAME
+--- !u!114 &7627463212103394575
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8884391103430529053}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: -1
+  m_PreferredHeight: -1
+  m_FlexibleWidth: 1
+  m_FlexibleHeight: -1
+  m_LayoutPriority: 1
diff --git a/AxibugEmuOnline.Client/Assets/Script/Filter/FilterEffect.cs b/AxibugEmuOnline.Client/Assets/Script/Filter/FilterEffect.cs
index 2a728b1a..95d9adde 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Filter/FilterEffect.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Filter/FilterEffect.cs
@@ -26,7 +26,22 @@ namespace AxibugEmuOnline.Client
                               where t.DeclaringType.IsSubclassOf(typeof(FilterEffect))
                               orderby t.MetadataToken
                               select t);
-            m_editableParamList = parameters.Select(p => new EditableParamerter(p.Name, (ParameterOverride)p.GetValue(this))).ToList();
+
+            m_editableParamList = new List<EditableParamerter>();
+            foreach (var param in parameters)
+            {
+                var paramObj = (ParameterOverride)param.GetValue(this);
+                var rangeAtt = param.GetCustomAttribute<RangeAttribute>();
+                float min = 0;
+                float max = 10;
+                if (rangeAtt != null)
+                {
+                    min = rangeAtt.min; max = rangeAtt.max;
+                }
+
+                var editableParam = new EditableParamerter(param.Name, paramObj, min, max);
+                m_editableParamList.Add(editableParam);
+            }
         }
 
         public class EditableParamerter
@@ -42,9 +57,13 @@ namespace AxibugEmuOnline.Client
                 set
                 {
                     valueFieldInfo.SetValue(m_paramObject, value);
+                    m_paramObject.overrideState = true;
                 }
             }
-            public EditableParamerter(string name, ParameterOverride paramObject)
+            public object MinValue { get; private set; }
+            public object MaxValue { get; private set; }
+
+            public EditableParamerter(string name, ParameterOverride paramObject, object minValue, object maxValue)
             {
                 m_paramObject = paramObject;
                 Name = name;
@@ -60,18 +79,16 @@ namespace AxibugEmuOnline.Client
                 {
                     ValueType = typeof(object);
                 }
+
+                MinValue = minValue;
+                MaxValue = maxValue;
             }
 
             public void ResetToDefault() => m_paramObject.overrideState = false;
 
-            public string Serilized()
-            {
-                return JsonUtility.ToJson(Value);
-            }
 
-            public void Apply(string json)
+            public void Apply(object overrideValue)
             {
-                var overrideValue = JsonUtility.FromJson(json, ValueType);
                 Value = overrideValue;
             }
         }
diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/FilterManager.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/FilterManager.cs
index 1f61f48c..72d7720c 100644
--- a/AxibugEmuOnline.Client/Assets/Script/Manager/FilterManager.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/Manager/FilterManager.cs
@@ -1,4 +1,5 @@
-using System;
+using AxibugEmuOnline.Client.ClientCore;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using UnityEngine;
@@ -94,7 +95,8 @@ namespace AxibugEmuOnline.Client
             filter = Filters.FirstOrDefault(f => f.Name == value.filterName);
             if (filter != null)
             {
-                preset = filter.Presets.FirstOrDefault(p => p.Name == value.filterName);
+                string presetName = value.presetName;
+                preset = filter.Presets.FirstOrDefault(p => p.Name == presetName);
             }
 
             return (filter, preset);
@@ -126,9 +128,9 @@ namespace AxibugEmuOnline.Client
                 else Presets = loadedPresets.presets;
             }
 
-            private void savePresets()
+            public void SavePresets()
             {
-                var json = JsonUtility.ToJson(new FilterPresetList { presets = Presets });
+                var json = JsonUtility.ToJson(new FilterPresetList(Presets));
                 PlayerPrefs.SetString($"Filter_{Name}_PresetList", json);
             }
 
@@ -141,7 +143,7 @@ namespace AxibugEmuOnline.Client
                 newPreset = new FilterPreset(presetName);
                 Presets.Add(newPreset);
 
-                savePresets();
+                SavePresets();
 
                 return true;
             }
@@ -149,7 +151,7 @@ namespace AxibugEmuOnline.Client
             public void RemovePreset(FilterPreset preset)
             {
                 if (!Presets.Remove(preset)) return;
-                savePresets();
+                SavePresets();
 
                 EventInvoker.RaiseFilterPresetRemoved(this, preset);
             }
@@ -166,11 +168,11 @@ namespace AxibugEmuOnline.Client
             {
                 foreach (var param in Paramerters)
                 {
-                    var json = preset.GetParamValueJson(param.Name);
-                    if (string.IsNullOrEmpty(json))
+                    var value = preset.GetParamValue(param.Name, param.ValueType);
+                    if (value == null)
                         param.ResetToDefault();
                     else
-                        param.Apply(json);
+                        param.Apply(value);
                 }
 
             }
@@ -182,6 +184,15 @@ namespace AxibugEmuOnline.Client
         private class FilterPresetList
         {
             public List<FilterPreset> presets;
+
+            public FilterPresetList(List<FilterPreset> presets)
+            {
+                this.presets = presets;
+                foreach (var preset in presets)
+                {
+                    preset.ReadyForJson();
+                }
+            }
         }
 
         [Serializable]
@@ -201,6 +212,12 @@ namespace AxibugEmuOnline.Client
                 Name = presetName;
             }
 
+            public void ReadyForJson()
+            {
+                m_paramName = m_paramName2ValueJson.Keys.ToList();
+                m_valueJson = m_paramName2ValueJson.Values.ToList();
+            }
+
             public string GetParamValueJson(string paramName)
             {
                 prepareCache();
@@ -209,6 +226,34 @@ namespace AxibugEmuOnline.Client
                 return value;
             }
 
+            public object GetParamValue(string paramName, Type valueType)
+            {
+                var rawStr = GetParamValueJson(paramName);
+                if (rawStr == null) return null;
+
+                if (valueType == typeof(float))
+                {
+                    float.TryParse(rawStr, out var floatVal);
+                    return floatVal;
+                }
+                else if (valueType.IsEnum)
+                {
+                    Enum.TryParse(valueType, rawStr,out var enumValue);
+                    return enumValue;
+                }
+                else
+                {
+                    App.log.Error($"尚未支持的滤镜参数类型{valueType}");
+                    return null;
+                }
+            }
+
+            public void SetParamValue(string paramName, Type valueType, object value)
+            {
+                prepareCache();
+                m_paramName2ValueJson[paramName] = value.ToString();
+            }
+
             private void prepareCache()
             {
                 if (m_cacheReady) return;
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/BgSettingsUI/UI_FilterItem.cs b/AxibugEmuOnline.Client/Assets/Script/UI/BgSettingsUI/UI_FilterItem.cs
index eb7952eb..562f0673 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/BgSettingsUI/UI_FilterItem.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/BgSettingsUI/UI_FilterItem.cs
@@ -1,5 +1,6 @@
 using AxibugEmuOnline.Client.ClientCore;
 using AxibugEmuOnline.Client.UI;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using UnityEngine;
@@ -88,12 +89,16 @@ namespace AxibugEmuOnline.Client
             private Filter m_filter;
             private FilterPreset m_preset;
             private OptionUI_MenuItem m_ui;
+            private List<OptionMenu> m_menu;
 
             public Opt_Presets(Filter filter, FilterPreset preset) : base(preset.Name, null)
             {
                 m_filter = filter;
                 m_preset = preset;
 
+                m_menu = new List<OptionMenu>();
+                m_menu.Add(new Opt_Delete(m_filter, m_preset));
+                foreach (var p in m_filter.Paramerters) m_menu.Add(new Opt_ParamEditor(m_filter, p, m_preset));
             }
 
             public override void OnShow(OptionUI_MenuItem ui)
@@ -122,7 +127,37 @@ namespace AxibugEmuOnline.Client
 
             protected override List<OptionMenu> GetOptionMenus()
             {
-                return new List<OptionMenu> { new Opt_Delete(m_filter, m_preset) };
+                return m_menu;
+            }
+
+            public class Opt_ParamEditor : ValueSetMenu
+            {
+                private Filter m_filter;
+                private FilterEffect.EditableParamerter m_param;
+                private FilterPreset m_preset;
+
+                public Opt_ParamEditor(Filter filter, FilterEffect.EditableParamerter editParam, FilterPreset preset)
+                    : base(editParam.Name)
+                {
+                    m_filter = filter;
+                    m_param = editParam;
+                    m_preset = preset;
+                }
+
+                public override Type ValueType => m_param.ValueType;
+
+                public override object ValueRaw => m_preset.GetParamValue(m_param.Name, ValueType) ?? m_param.Value;
+
+                public override void OnValueChanged(object newValue)
+                {
+                    m_preset.SetParamValue(m_param.Name, ValueType, newValue);
+                    m_filter.SavePresets();
+                    m_param.Apply(newValue);
+                }
+
+                public override object Min => m_param.MinValue;
+
+                public override object Max => m_param.MaxValue;
             }
 
             public class Opt_Delete : ExecuteMenu
@@ -141,6 +176,8 @@ namespace AxibugEmuOnline.Client
                     m_filter.RemovePreset(m_preset);
                 }
             }
+
+
         }
     }
 }
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI.cs b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI.cs
index 620d8a90..1fcdf229 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI.cs
@@ -15,6 +15,7 @@ namespace AxibugEmuOnline.Client
         [Space]
         [Header("ģ��")]
         [SerializeField] OptionUI_ExecuteItem TEMPLATE_EXECUTEITEM;
+        [SerializeField] OptionUI_ValueEditItem TEMPLATE_VALUEEDITITEM;
 
         private OptionUI m_child;
         private OptionUI m_parent;
@@ -64,6 +65,8 @@ namespace AxibugEmuOnline.Client
         protected override void Awake()
         {
             TEMPLATE_EXECUTEITEM.gameObject.SetActiveEx(false);
+            TEMPLATE_VALUEEDITITEM.gameObject.SetActiveEx(false);
+
             SelectBorder.gameObject.SetActiveEx(false);
             base.Awake();
         }
@@ -269,15 +272,19 @@ namespace AxibugEmuOnline.Client
         {
             if (menuData is ExecuteMenu executeMenu)
             {
-                var menuUI = GameObject.Instantiate(TEMPLATE_EXECUTEITEM.gameObject, TEMPLATE_EXECUTEITEM.transform.parent).GetComponent<OptionUI_ExecuteItem>();
+                var menuUI = Instantiate(TEMPLATE_EXECUTEITEM.gameObject, TEMPLATE_EXECUTEITEM.transform.parent).GetComponent<OptionUI_ExecuteItem>();
                 menuUI.gameObject.SetActive(true);
                 menuUI.SetData(this, executeMenu);
                 m_runtimeMenuItems.Add(menuUI);
             }
-            else
+            else if (menuData is ValueSetMenu valueSetMenu)
             {
-                throw new NotImplementedException($"�ݲ�֧�ֵIJ˵�����{menuData.GetType().Name}");
+                var menuUI = Instantiate(TEMPLATE_VALUEEDITITEM.gameObject, TEMPLATE_VALUEEDITITEM.transform.parent).GetComponent<OptionUI_ValueEditItem>();
+                menuUI.gameObject.SetActive(true);
+                menuUI.SetData(this, valueSetMenu);
+                m_runtimeMenuItems.Add(menuUI);
             }
+            else throw new NotImplementedException($"�ݲ�֧�ֵIJ˵�����{menuData.GetType().Name}");
         }
 
         private void ReleaseRuntimeMenus()
@@ -305,10 +312,23 @@ namespace AxibugEmuOnline.Client
             Hide();
         }
 
+        protected override void OnCmdSelectItemLeft()
+        {
+            var executer = m_runtimeMenuItems[SelectIndex];
+            if (executer != null)
+            {
+                executer.OnLeft();
+            }
+        }
+
         protected override void OnCmdSelectItemRight()
         {
             var executer = m_runtimeMenuItems[SelectIndex];
-            if (!executer.IsExpandMenu) return;
+            if (!executer.IsExpandMenu)
+            {
+                executer.OnRight();
+                return;
+            }
 
             OnCmdEnter();
         }
@@ -384,25 +404,6 @@ namespace AxibugEmuOnline.Client
         protected abstract List<OptionMenu> GetOptionMenus();
     }
 
-    /// <summary>
-    /// ����ֵ������ʾ�ͱ༭�IJ˵�
-    /// </summary>
-    /// <typeparam name="T"></typeparam>
-    public class ValueSetMenu<T> : ValueSetMenu
-    {
-        public sealed override Type ValueType => typeof(T);
-
-        public T Value { get; private set; }
-
-        public sealed override object ValueRaw => Value;
-
-        public sealed override void OnValueChanged(object newValue)
-        {
-            Value = (T)newValue;
-        }
-        protected ValueSetMenu(string name) : base(name) { }
-    }
-
     /// <summary> ��Ҫֱ�Ӽ̳������ </summary>
     public abstract class OptionMenu
     {
@@ -421,7 +422,9 @@ namespace AxibugEmuOnline.Client
         public virtual void OnShow(OptionUI_MenuItem ui) { }
         public virtual void OnHide() { }
     }
-    /// <summary> ��Ҫֱ�Ӽ̳������ </summary>
+    /// <summary>
+    /// ����ֵ������ʾ�ͱ༭�IJ˵�
+    /// </summary>
     public abstract class ValueSetMenu : OptionMenu
     {
         public ValueSetMenu(string name) : base(name) { }
@@ -429,7 +432,7 @@ namespace AxibugEmuOnline.Client
         public abstract Type ValueType { get; }
         public abstract object ValueRaw { get; }
         public abstract void OnValueChanged(object newValue);
+        public abstract object Min { get; }
+        public abstract object Max { get; }
     }
-
-
 }
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_MenuItem.cs b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_MenuItem.cs
index 5b3203f1..f3ae05b9 100644
--- a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_MenuItem.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_MenuItem.cs
@@ -35,6 +35,8 @@ namespace AxibugEmuOnline.Client
         protected abstract void OnSetData(OptionMenu menuData);
 
         public abstract void OnExecute(OptionUI optionUI, ref bool cancelHide);
+        public virtual void OnLeft() { }
+        public virtual void OnRight() { }
         public abstract void OnFocus();
         public virtual void OnHide() { }
     }
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem.cs b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem.cs
new file mode 100644
index 00000000..9c88a3f2
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem.cs
@@ -0,0 +1,69 @@
+using AxibugEmuOnline.Client.ClientCore;
+using UnityEngine;
+
+namespace AxibugEmuOnline.Client
+{
+    public class OptionUI_ValueEditItem : OptionUI_MenuItem<ValueSetMenu>
+    {
+        [SerializeField]
+        OptionUI_ValueEditItem_FloatEdit com_floatEdit;
+        [SerializeField]
+        OptionUI_ValueEditItem_EnumEdit com_enumEdit;
+
+        IValueEditControl m_currentCom;
+
+        protected override void OnSetData(OptionMenu menuData)
+        {
+            com_floatEdit.gameObject.SetActive(false);
+            com_enumEdit.gameObject.SetActive(false);
+
+            if (menuData is ValueSetMenu valueMenu)
+            {
+                if (valueMenu.ValueType == typeof(float))
+                {
+                    m_currentCom = com_floatEdit;
+                }
+                else if (valueMenu.ValueType.IsEnum)
+                {
+                    m_currentCom = com_enumEdit;
+                }
+                else
+                {
+                    App.log.Error($"��δ֧�ֵ���������:{valueMenu.ValueType}");
+                    return;
+                }
+
+
+                m_currentCom.gameObject.SetActiveEx(true);
+                m_currentCom.SetData(valueMenu);
+            }
+
+            base.OnSetData(menuData);
+        }
+
+        public override void OnExecute(OptionUI optionUI, ref bool cancelHide)
+        {
+            cancelHide = true;
+            m_currentCom?.OnExecute();
+        }
+
+        public override void OnLeft()
+        {
+            m_currentCom?.OnLeft();
+        }
+
+        public override void OnRight()
+        {
+            m_currentCom?.OnRight();
+        }
+    }
+
+    public interface IValueEditControl
+    {
+        void SetData(ValueSetMenu valueMenu);
+        GameObject gameObject { get; }
+        void OnLeft();
+        void OnRight();
+        void OnExecute();
+    }
+}
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem.cs.meta b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem.cs.meta
new file mode 100644
index 00000000..4b7744c2
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: deae682aaf23cab458cba1b12cd3a1f7
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_EnumEdit.cs b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_EnumEdit.cs
new file mode 100644
index 00000000..6b5f6fe7
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_EnumEdit.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace AxibugEmuOnline.Client
+{
+    public class OptionUI_ValueEditItem_EnumEdit : MonoBehaviour, IValueEditControl
+    {
+        [SerializeField]
+        Text txt_value;
+
+        private ValueSetMenu m_valueMenu;
+        private List<Enum> m_enumValues = new List<Enum>();
+        private int m_valueIndex;
+
+        public void SetData(ValueSetMenu valueMenu)
+        {
+            m_valueMenu = valueMenu;
+            txt_value.text = valueMenu.ValueRaw.ToString();
+
+            foreach (Enum enumValue in Enum.GetValues(valueMenu.ValueType))
+            {
+                m_enumValues.Add(enumValue);
+            }
+            m_valueIndex = m_enumValues.IndexOf((Enum)valueMenu.ValueRaw);
+        }
+
+        public void OnLeft()
+        {
+            m_valueIndex--;
+
+            if (m_valueIndex < 0) m_valueIndex = m_enumValues.Count - 1;
+
+            var value = m_enumValues[m_valueIndex];
+            txt_value.text = value.ToString();
+            m_valueMenu.OnValueChanged(value);
+        }
+
+        public void OnRight()
+        {
+            m_valueIndex++;
+
+            if (m_valueIndex >= m_enumValues.Count) m_valueIndex = 0;
+
+            var value = m_enumValues[m_valueIndex];
+            txt_value.text = value.ToString();
+            m_valueMenu.OnValueChanged(value);
+        }
+
+        public void OnExecute()
+        {
+            OnRight();
+        }
+    }
+}
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_EnumEdit.cs.meta b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_EnumEdit.cs.meta
new file mode 100644
index 00000000..78cb595d
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_EnumEdit.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: ef1018f09e7c5b049b75128ee308d372
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_FloatEdit.cs b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_FloatEdit.cs
new file mode 100644
index 00000000..bd1a3ab3
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_FloatEdit.cs
@@ -0,0 +1,53 @@
+using System;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace AxibugEmuOnline.Client
+{
+    public class OptionUI_ValueEditItem_FloatEdit : MonoBehaviour, IValueEditControl
+    {
+        [SerializeField]
+        Slider slider;
+        [SerializeField]
+        Text txt_value;
+
+        float m_step;
+        private ValueSetMenu m_valueMenu;
+
+        private void Awake()
+        {
+            slider.onValueChanged.AddListener(OnSliderValueChanged);
+        }
+
+        private void OnSliderValueChanged(float value)
+        {
+            txt_value.text = $"{value:.00}";
+            m_valueMenu.OnValueChanged(value);
+        }
+
+        public void SetData(ValueSetMenu valueMenu)
+        {
+            m_valueMenu = valueMenu;
+            slider.minValue = (float)valueMenu.Min;
+            slider.maxValue = (float)valueMenu.Max;
+            slider.value = (float)valueMenu.ValueRaw;
+            m_step = (slider.maxValue - slider.minValue) * 0.05f;
+        }
+
+        public void OnLeft()
+        {
+            var newValue = Mathf.Clamp(slider.value - m_step, slider.minValue, slider.maxValue);
+            slider.value = newValue;
+        }
+
+        public void OnRight()
+        {
+            var newValue = Mathf.Clamp(slider.value + m_step, slider.minValue, slider.maxValue);
+            slider.value = newValue;
+        }
+
+        public void OnExecute()
+        {
+        }
+    }
+}
diff --git a/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_FloatEdit.cs.meta b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_FloatEdit.cs.meta
new file mode 100644
index 00000000..44c37b3d
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/UI/OptionUI/OptionUI_ValueEditItem_FloatEdit.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 8c9e9868e38e8ea44a0dad03b987cd73
\ No newline at end of file