From 19f17fa0595dc613c6ca10dcb533f1780cd0718d Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 13 Apr 2018 00:00:36 +0200 Subject: [PATCH 001/194] Graphics: Add 2D & cubemap white textures --- ChangeLog.md | 1 + .../Nazara/Graphics/DeferredGeometryPass.hpp | 2 +- .../Nazara/Graphics/DepthRenderTechnique.hpp | 2 +- .../Graphics/ForwardRenderTechnique.hpp | 4 ++-- src/Nazara/Graphics/DeferredGeometryPass.cpp | 6 ++---- src/Nazara/Graphics/DepthRenderTechnique.cpp | 6 ++---- .../Graphics/ForwardRenderTechnique.cpp | 15 ++++----------- src/Nazara/Graphics/Graphics.cpp | 19 +++++++++++++++++++ 8 files changed, 32 insertions(+), 23 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 03a51ba76..7fec5792d 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -85,6 +85,7 @@ Nazara Engine: - Fixed Sound copy which was not copying looping state - Fixed Billboard bounding volume - Fixed Directory::GetResultSize and Directory::IsResultDirectory on Posix systems +- Graphics module now register "White2D" and "WhiteCubemap" textures to the TextureLibrary (respectively a 1x1 texture 2D and a 1x1 texture cubemap) Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Graphics/DeferredGeometryPass.hpp b/include/Nazara/Graphics/DeferredGeometryPass.hpp index cb38508b8..3c7890bfe 100644 --- a/include/Nazara/Graphics/DeferredGeometryPass.hpp +++ b/include/Nazara/Graphics/DeferredGeometryPass.hpp @@ -56,7 +56,7 @@ namespace Nz Buffer m_vertexBuffer; RenderStates m_clearStates; ShaderRef m_clearShader; - Texture m_whiteTexture; + TextureRef m_whiteTexture; VertexBuffer m_billboardPointBuffer; VertexBuffer m_spriteBuffer; diff --git a/include/Nazara/Graphics/DepthRenderTechnique.hpp b/include/Nazara/Graphics/DepthRenderTechnique.hpp index 44ef1fa77..f8f7bc4e3 100644 --- a/include/Nazara/Graphics/DepthRenderTechnique.hpp +++ b/include/Nazara/Graphics/DepthRenderTechnique.hpp @@ -66,7 +66,7 @@ namespace Nz Buffer m_vertexBuffer; RenderStates m_clearStates; ShaderRef m_clearShader; - Texture m_whiteTexture; + TextureRef m_whiteTexture; VertexBuffer m_billboardPointBuffer; VertexBuffer m_spriteBuffer; mutable DepthRenderQueue m_renderQueue; diff --git a/include/Nazara/Graphics/ForwardRenderTechnique.hpp b/include/Nazara/Graphics/ForwardRenderTechnique.hpp index 8fc75fd13..640986e62 100644 --- a/include/Nazara/Graphics/ForwardRenderTechnique.hpp +++ b/include/Nazara/Graphics/ForwardRenderTechnique.hpp @@ -88,13 +88,13 @@ namespace Nz mutable std::vector> m_spriteChains; Buffer m_vertexBuffer; mutable BasicRenderQueue m_renderQueue; - Texture m_whiteTexture; + TextureRef m_whiteCubemap; + TextureRef m_whiteTexture; VertexBuffer m_billboardPointBuffer; VertexBuffer m_spriteBuffer; unsigned int m_maxLightPassPerObject; static IndexBuffer s_quadIndexBuffer; - static Texture s_dummyReflection; static TextureSampler s_reflectionSampler; static TextureSampler s_shadowSampler; static VertexBuffer s_quadVertexBuffer; diff --git a/src/Nazara/Graphics/DeferredGeometryPass.cpp b/src/Nazara/Graphics/DeferredGeometryPass.cpp index 01072bf20..ef7586259 100644 --- a/src/Nazara/Graphics/DeferredGeometryPass.cpp +++ b/src/Nazara/Graphics/DeferredGeometryPass.cpp @@ -48,9 +48,7 @@ namespace Nz { ErrorFlags flags(ErrorFlag_ThrowException, true); - std::array whitePixel = { { 255, 255, 255, 255 } }; - m_whiteTexture.Create(ImageType_2D, PixelFormatType_RGBA8, 1, 1); - m_whiteTexture.Update(whitePixel.data()); + m_whiteTexture = Nz::TextureLibrary::Get("White2D"); m_vertexBuffer.Create(s_vertexBufferSize, DataStorage_Hardware, BufferUsage_Dynamic); @@ -576,7 +574,7 @@ namespace Nz lastMaterial = basicSprites.material; } - const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : &m_whiteTexture; + const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get(); if (overlayTexture != lastOverlay) { Renderer::SetTexture(overlayTextureUnit, overlayTexture); diff --git a/src/Nazara/Graphics/DepthRenderTechnique.cpp b/src/Nazara/Graphics/DepthRenderTechnique.cpp index c536c4c83..6c858f51c 100644 --- a/src/Nazara/Graphics/DepthRenderTechnique.cpp +++ b/src/Nazara/Graphics/DepthRenderTechnique.cpp @@ -49,9 +49,7 @@ namespace Nz { ErrorFlags flags(ErrorFlag_ThrowException, true); - std::array whitePixel = { {255, 255, 255, 255} }; - m_whiteTexture.Create(ImageType_2D, PixelFormatType_RGBA8, 1, 1); - m_whiteTexture.Update(whitePixel.data()); + m_whiteTexture = Nz::TextureLibrary::Get("White2D"); m_vertexBuffer.Create(s_vertexBufferSize, DataStorage_Hardware, BufferUsage_Dynamic); @@ -587,7 +585,7 @@ namespace Nz lastMaterial = basicSprites.material; } - const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : &m_whiteTexture; + const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get(); if (overlayTexture != lastOverlay) { Renderer::SetTexture(overlayTextureUnit, overlayTexture); diff --git a/src/Nazara/Graphics/ForwardRenderTechnique.cpp b/src/Nazara/Graphics/ForwardRenderTechnique.cpp index 904d87dfd..142e559eb 100644 --- a/src/Nazara/Graphics/ForwardRenderTechnique.cpp +++ b/src/Nazara/Graphics/ForwardRenderTechnique.cpp @@ -52,9 +52,8 @@ namespace Nz { ErrorFlags flags(ErrorFlag_ThrowException, true); - std::array whitePixel = { {255, 255, 255, 255} }; - m_whiteTexture.Create(ImageType_2D, PixelFormatType_RGBA8, 1, 1); - m_whiteTexture.Update(whitePixel.data()); + m_whiteCubemap = Nz::TextureLibrary::Get("WhiteCubemap"); + m_whiteTexture = Nz::TextureLibrary::Get("White2D"); m_vertexBuffer.Create(s_vertexBufferSize, DataStorage_Hardware, BufferUsage_Dynamic); @@ -219,10 +218,6 @@ namespace Nz s_shadowSampler.SetFilterMode(SamplerFilter_Bilinear); s_shadowSampler.SetWrapMode(SamplerWrap_Clamp); - - std::array whitePixels = { { 255, 255, 255, 255, 255, 255 } }; - s_dummyReflection.Create(ImageType_Cubemap, PixelFormatType_L8, 1, 1); - s_dummyReflection.Update(whitePixels.data()); } catch (const std::exception& e) { @@ -239,7 +234,6 @@ namespace Nz void ForwardRenderTechnique::Uninitialize() { - s_dummyReflection.Destroy(); s_quadIndexBuffer.Reset(); s_quadVertexBuffer.Reset(); } @@ -247,7 +241,7 @@ namespace Nz /*! * \brief Chooses the nearest lights for one object * - * \param object Sphere symbolising the object + * \param object Sphere symbolizing the object * \param includeDirectionalLights Should directional lights be included in the computation */ @@ -726,7 +720,7 @@ namespace Nz lastMaterial = basicSprites.material; } - const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : &m_whiteTexture; + const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get(); if (overlayTexture != lastOverlay) { Renderer::SetTexture(overlayTextureUnit, overlayTexture); @@ -897,7 +891,6 @@ namespace Nz } IndexBuffer ForwardRenderTechnique::s_quadIndexBuffer; - Texture ForwardRenderTechnique::s_dummyReflection; TextureSampler ForwardRenderTechnique::s_reflectionSampler; TextureSampler ForwardRenderTechnique::s_shadowSampler; VertexBuffer ForwardRenderTechnique::s_quadVertexBuffer; diff --git a/src/Nazara/Graphics/Graphics.cpp b/src/Nazara/Graphics/Graphics.cpp index 5ae1d8554..b8538a163 100644 --- a/src/Nazara/Graphics/Graphics.cpp +++ b/src/Nazara/Graphics/Graphics.cpp @@ -156,6 +156,21 @@ namespace Nz Font::SetDefaultAtlas(std::make_shared()); + // Textures + std::array whitePixels = { { 255, 255, 255, 255, 255, 255 } }; + + Nz::TextureRef whiteTexture = Nz::Texture::New(); + whiteTexture->Create(ImageType_2D, PixelFormatType_L8, 1, 1); + whiteTexture->Update(whitePixels.data()); + + TextureLibrary::Register("White2D", std::move(whiteTexture)); + + Nz::TextureRef whiteCubemap = Nz::Texture::New(); + whiteCubemap->Create(ImageType_Cubemap, PixelFormatType_L8, 1, 1); + whiteCubemap->Update(whitePixels.data()); + + TextureLibrary::Register("WhiteCubemap", std::move(whiteCubemap)); + onExit.Reset(); NazaraNotice("Initialized: Graphics module"); @@ -217,6 +232,10 @@ namespace Nz defaultAtlas.reset(); + // Textures + TextureLibrary::Unregister("White2D"); + TextureLibrary::Unregister("WhiteCubemap"); + // Loaders Loaders::UnregisterMesh(); Loaders::UnregisterTexture(); From 251b8af03af701cc6eb0fa48a61e24d4675663ea Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 13 Apr 2018 22:09:19 +0200 Subject: [PATCH 002/194] SDK: Add DebugComponent @gawaboumga @gawaboumga @gawaboumga @gawaboumga @gawaboumga @gawaboumga @gawaboumga @gawaboumga @gawaboumga @gawaboumga --- ChangeLog.md | 1 + SDK/include/NDK/Components.hpp | 3 +- SDK/include/NDK/Components/DebugComponent.hpp | 80 ++++ SDK/include/NDK/Components/DebugComponent.inl | 74 ++++ SDK/include/NDK/Systems.hpp | 1 + SDK/include/NDK/Systems/DebugSystem.hpp | 51 +++ SDK/include/NDK/Systems/DebugSystem.inl | 6 + SDK/src/NDK/Components/DebugComponent.cpp | 10 + SDK/src/NDK/Sdk.cpp | 4 + SDK/src/NDK/Systems/DebugSystem.cpp | 363 ++++++++++++++++++ SDK/src/NDK/World.cpp | 2 + include/Nazara/Core.hpp | 1 + 12 files changed, 595 insertions(+), 1 deletion(-) create mode 100644 SDK/include/NDK/Components/DebugComponent.hpp create mode 100644 SDK/include/NDK/Components/DebugComponent.inl create mode 100644 SDK/include/NDK/Systems/DebugSystem.hpp create mode 100644 SDK/include/NDK/Systems/DebugSystem.inl create mode 100644 SDK/src/NDK/Components/DebugComponent.cpp create mode 100644 SDK/src/NDK/Systems/DebugSystem.cpp diff --git a/ChangeLog.md b/ChangeLog.md index 7fec5792d..c724b0117 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -129,6 +129,7 @@ Nazara Development Kit: - Fix GraphicsComponent bounding volume not taking local matrix in account - ⚠️ Rewrote all render queue system, which should be more efficient, take scissor box into account - ⚠️ All widgets are now bound to a scissor box when rendering +- Add DebugComponent (a component able to show aabb/obb/collision mesh) # 0.4: diff --git a/SDK/include/NDK/Components.hpp b/SDK/include/NDK/Components.hpp index e099b641b..97c15fc7c 100644 --- a/SDK/include/NDK/Components.hpp +++ b/SDK/include/NDK/Components.hpp @@ -8,6 +8,8 @@ #include #include #include +#include +#include #include #include #include @@ -17,6 +19,5 @@ #include #include #include -#include #endif // NDK_COMPONENTS_GLOBAL_HPP diff --git a/SDK/include/NDK/Components/DebugComponent.hpp b/SDK/include/NDK/Components/DebugComponent.hpp new file mode 100644 index 000000000..85e868b5a --- /dev/null +++ b/SDK/include/NDK/Components/DebugComponent.hpp @@ -0,0 +1,80 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Development Kit" +// For conditions of distribution and use, see copyright notice in Prerequisites.hpp + +#pragma once + +#ifndef NDK_SERVER +#ifndef NDK_COMPONENTS_DEBUGCOMPONENT_HPP +#define NDK_COMPONENTS_DEBUGCOMPONENT_HPP + +#include +#include +#include + +namespace Ndk +{ + enum class DebugDraw + { + //TODO: Collider2D + Collider3D, + GraphicsAABB, + GraphicsOBB, + + Max = GraphicsOBB + }; +} + +namespace Nz +{ + template<> + struct EnumAsFlags + { + static constexpr Ndk::DebugDraw max = Ndk::DebugDraw::GraphicsOBB; + }; +} + +namespace Ndk +{ + using DebugDrawFlags = Nz::Flags; + + constexpr DebugDrawFlags DebugDraw_None = 0; + + class NDK_API DebugComponent : public Component + { + friend class DebugSystem; + + public: + inline DebugComponent(DebugDrawFlags flags = DebugDraw_None); + inline DebugComponent(const DebugComponent& debug); + ~DebugComponent() = default; + + inline void Disable(DebugDrawFlags flags); + inline void Enable(DebugDrawFlags flags); + + inline DebugDrawFlags GetFlags() const; + + inline bool IsEnabled(DebugDrawFlags flags) const; + + inline DebugComponent& operator=(const DebugComponent& debug); + + static ComponentIndex componentIndex; + + private: + inline const Nz::InstancedRenderableRef& GetDebugRenderable(DebugDraw option) const; + inline DebugDrawFlags GetEnabledFlags() const; + inline void UpdateDebugRenderable(DebugDraw option, Nz::InstancedRenderableRef renderable); + inline void UpdateEnabledFlags(DebugDrawFlags flags); + + static constexpr std::size_t DebugModeCount = static_cast(DebugDraw::Max) + 1; + + std::array m_debugRenderables; + DebugDrawFlags m_enabledFlags; + DebugDrawFlags m_flags; + }; +} + +#include + +#endif // NDK_COMPONENTS_DEBUGCOMPONENT_HPP +#endif // NDK_SERVER diff --git a/SDK/include/NDK/Components/DebugComponent.inl b/SDK/include/NDK/Components/DebugComponent.inl new file mode 100644 index 000000000..e0f42a560 --- /dev/null +++ b/SDK/include/NDK/Components/DebugComponent.inl @@ -0,0 +1,74 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Development Kit" +// For conditions of distribution and use, see copyright notice in Prerequisites.hpp + +#include + +namespace Ndk +{ + inline DebugComponent::DebugComponent(DebugDrawFlags flags) : + m_flags(flags) + { + } + + inline DebugComponent::DebugComponent(const DebugComponent& debug) : + m_flags(debug.m_flags) + { + } + + inline void DebugComponent::Disable(DebugDrawFlags flags) + { + m_flags &= ~flags; + + if (m_entity) + m_entity->Invalidate(); + } + + inline void DebugComponent::Enable(DebugDrawFlags flags) + { + m_flags |= flags; + + if (m_entity) + m_entity->Invalidate(); + } + + inline DebugDrawFlags DebugComponent::GetFlags() const + { + return m_flags; + } + + inline bool DebugComponent::IsEnabled(DebugDrawFlags flags) const + { + return (m_flags & flags) == flags; + } + + inline DebugComponent& DebugComponent::operator=(const DebugComponent& debug) + { + m_flags = debug.m_flags; + + if (m_entity) + m_entity->Invalidate(); + + return *this; + } + + inline const Nz::InstancedRenderableRef& DebugComponent::GetDebugRenderable(DebugDraw option) const + { + return m_debugRenderables[static_cast(option)]; + } + + inline DebugDrawFlags DebugComponent::GetEnabledFlags() const + { + return m_enabledFlags; + } + + inline void DebugComponent::UpdateDebugRenderable(DebugDraw option, Nz::InstancedRenderableRef renderable) + { + m_debugRenderables[static_cast(option)] = std::move(renderable); + } + + inline void DebugComponent::UpdateEnabledFlags(DebugDrawFlags flags) + { + m_enabledFlags = flags; + } +} diff --git a/SDK/include/NDK/Systems.hpp b/SDK/include/NDK/Systems.hpp index a0ee23e77..80571ef45 100644 --- a/SDK/include/NDK/Systems.hpp +++ b/SDK/include/NDK/Systems.hpp @@ -5,6 +5,7 @@ #ifndef NDK_SYSTEMS_GLOBAL_HPP #define NDK_SYSTEMS_GLOBAL_HPP +#include #include #include #include diff --git a/SDK/include/NDK/Systems/DebugSystem.hpp b/SDK/include/NDK/Systems/DebugSystem.hpp new file mode 100644 index 000000000..940feb782 --- /dev/null +++ b/SDK/include/NDK/Systems/DebugSystem.hpp @@ -0,0 +1,51 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Development Kit" +// For conditions of distribution and use, see copyright notice in Prerequisites.hpp + +#pragma once + +#ifndef NDK_SERVER +#ifndef NDK_SYSTEMS_DEBUGSYSTEM_HPP +#define NDK_SYSTEMS_DEBUGSYSTEM_HPP + +#include +#include +#include +#include +#include + +namespace Ndk +{ + class NDK_API DebugSystem : public System + { + public: + DebugSystem(); + ~DebugSystem() = default; + + static SystemIndex systemIndex; + + private: + Nz::InstancedRenderableRef GenerateBox(Nz::Boxf box); + Nz::InstancedRenderableRef GenerateCollision3DMesh(Entity* entity); + + Nz::MaterialRef GetAABBMaterial(); + Nz::MaterialRef GetCollisionMaterial(); + Nz::MaterialRef GetOBBMaterial(); + std::pair GetBoxMesh(); + + void OnEntityValidation(Entity* entity, bool justAdded) override; + + void OnUpdate(float elapsedTime) override; + + Nz::MaterialRef m_aabbMaterial; + Nz::MaterialRef m_collisionMaterial; + Nz::MaterialRef m_obbMaterial; + Nz::IndexBufferRef m_boxMeshIndexBuffer; + Nz::VertexBufferRef m_boxMeshVertexBuffer; + }; +} + +#include + +#endif // NDK_SYSTEMS_DEBUGSYSTEM_HPP +#endif // NDK_SERVER diff --git a/SDK/include/NDK/Systems/DebugSystem.inl b/SDK/include/NDK/Systems/DebugSystem.inl new file mode 100644 index 000000000..b7439fc12 --- /dev/null +++ b/SDK/include/NDK/Systems/DebugSystem.inl @@ -0,0 +1,6 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Development Kit" +// For conditions of distribution and use, see copyright notice in Prerequisites.hpp + +#include + diff --git a/SDK/src/NDK/Components/DebugComponent.cpp b/SDK/src/NDK/Components/DebugComponent.cpp new file mode 100644 index 000000000..6c8ab9f1c --- /dev/null +++ b/SDK/src/NDK/Components/DebugComponent.cpp @@ -0,0 +1,10 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Development Kit" +// For conditions of distribution and use, see copyright notice in Prerequisites.hpp + +#include + +namespace Ndk +{ + ComponentIndex DebugComponent::componentIndex; +} diff --git a/SDK/src/NDK/Sdk.cpp b/SDK/src/NDK/Sdk.cpp index e4a7008b7..90d07c738 100644 --- a/SDK/src/NDK/Sdk.cpp +++ b/SDK/src/NDK/Sdk.cpp @@ -28,11 +28,13 @@ #ifndef NDK_SERVER #include +#include #include #include #include #include #include +#include #include #include #include @@ -95,6 +97,7 @@ namespace Ndk #ifndef NDK_SERVER // Client components InitializeComponent("NdkCam"); + InitializeComponent("NdkDebug"); InitializeComponent("NdkLight"); InitializeComponent("NdkList"); InitializeComponent("NdkGfx"); @@ -113,6 +116,7 @@ namespace Ndk #ifndef NDK_SERVER // Client systems + InitializeSystem(); InitializeSystem(); InitializeSystem(); InitializeSystem(); diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp new file mode 100644 index 000000000..61dcae0a8 --- /dev/null +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -0,0 +1,363 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Development Kit" +// For conditions of distribution and use, see copyright notice in Prerequisites.hpp + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Ndk +{ + namespace + { + class DebugRenderable : public Nz::InstancedRenderable + { + public: + DebugRenderable(Ndk::Entity* owner, Nz::MaterialRef mat, Nz::IndexBufferRef indexBuffer, Nz::VertexBufferRef vertexBuffer) : + m_entityOwner(owner), + m_material(std::move(mat)), + m_indexBuffer(std::move(indexBuffer)), + m_vertexBuffer(std::move(vertexBuffer)) + { + ResetMaterials(1); + + m_meshData.indexBuffer = m_indexBuffer; + m_meshData.primitiveMode = Nz::PrimitiveMode_LineList; + m_meshData.vertexBuffer = m_vertexBuffer; + } + + void UpdateBoundingVolume(InstanceData* instanceData) const override + { + } + + void MakeBoundingVolume() const override + { + m_boundingVolume.MakeNull(); + } + + protected: + Ndk::EntityHandle m_entityOwner; + Nz::IndexBufferRef m_indexBuffer; + Nz::MaterialRef m_material; + Nz::MeshData m_meshData; + Nz::VertexBufferRef m_vertexBuffer; + }; + + class AABBDebugRenderable : public DebugRenderable + { + public: + using DebugRenderable::DebugRenderable; + + void AddToRenderQueue(Nz::AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Nz::Recti& scissorRect) const override + { + NazaraAssert(m_entityOwner, "DebugRenderable has no owner"); + + const DebugComponent& entityDebug = m_entityOwner->GetComponent(); + const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); + + Nz::Matrix4f transformMatrix = Nz::Matrix4f::Identity(); + transformMatrix.SetScale(entityGfx.GetBoundingVolume().aabb.GetLengths()); + transformMatrix.SetTranslation(entityGfx.GetBoundingVolume().aabb.GetCenter()); + + renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); + } + }; + + class OBBDebugRenderable : public DebugRenderable + { + public: + using DebugRenderable::DebugRenderable; + + void AddToRenderQueue(Nz::AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Nz::Recti& scissorRect) const override + { + NazaraAssert(m_entityOwner, "DebugRenderable has no owner"); + + const DebugComponent& entityDebug = m_entityOwner->GetComponent(); + const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); + + Nz::Matrix4f transformMatrix = instanceData.transformMatrix; + transformMatrix.ApplyScale(entityGfx.GetBoundingVolume().obb.localBox.GetLengths()); + + renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); + } + }; + } + + /*! + * \ingroup NDK + * \class Ndk::DebugSystem + * \brief NDK class that represents the debug system + * + * \remark This system is enabled if the entity owns the trait: DebugComponent and GraphicsComponent + */ + + /*! + * \brief Constructs an DebugSystem object by default + */ + DebugSystem::DebugSystem() + { + Requires(); + SetUpdateOrder(1000); //< Update last + } + + std::pair DebugSystem::GetBoxMesh() + { + if (!m_boxMeshIndexBuffer) + { + std::array indices = { + { + 0, 1, + 1, 2, + 2, 3, + 3, 0, + + 4, 5, + 5, 6, + 6, 7, + 7, 4, + + 0, 4, + 1, 5, + 2, 6, + 3, 7 + } + }; + + m_boxMeshIndexBuffer = Nz::IndexBuffer::New(false, indices.size(), Nz::DataStorage_Hardware, 0); + m_boxMeshIndexBuffer->Fill(indices.data(), 0, indices.size()); + } + + if (!m_boxMeshVertexBuffer) + { + Nz::Boxf box(-0.5f, -0.5f, -0.5f, 1.f, 1.f, 1.f); + + std::array positions = { + { + box.GetCorner(Nz::BoxCorner_FarLeftBottom), + box.GetCorner(Nz::BoxCorner_NearLeftBottom), + box.GetCorner(Nz::BoxCorner_NearRightBottom), + box.GetCorner(Nz::BoxCorner_FarRightBottom), + box.GetCorner(Nz::BoxCorner_FarLeftTop), + box.GetCorner(Nz::BoxCorner_NearLeftTop), + box.GetCorner(Nz::BoxCorner_NearRightTop), + box.GetCorner(Nz::BoxCorner_FarRightTop) + } + }; + + m_boxMeshVertexBuffer = Nz::VertexBuffer::New(Nz::VertexDeclaration::Get(Nz::VertexLayout_XYZ), positions.size(), Nz::DataStorage_Hardware, 0); + m_boxMeshVertexBuffer->Fill(positions.data(), 0, positions.size()); + } + + return { m_boxMeshIndexBuffer, m_boxMeshVertexBuffer }; + } + + void DebugSystem::OnEntityValidation(Entity* entity, bool /*justAdded*/) + { + static constexpr int DebugDrawOrder = 1'000; + + DebugComponent& entityDebug = entity->GetComponent(); + GraphicsComponent& entityGfx = entity->GetComponent(); + + DebugDrawFlags enabledFlags = entityDebug.GetEnabledFlags(); + DebugDrawFlags flags = entityDebug.GetFlags(); + + DebugDrawFlags flagsToEnable = flags & ~enabledFlags; + for (std::size_t i = 0; i <= static_cast(DebugDraw::Max); ++i) + { + DebugDraw option = static_cast(i); + if (flagsToEnable & option) + { + switch (option) + { + case DebugDraw::Collider3D: + { + const Nz::Boxf& obb = entityGfx.GetBoundingVolume().obb.localBox; + + Nz::InstancedRenderableRef renderable = GenerateCollision3DMesh(entity); + renderable->SetPersistent(false); + + entityGfx.Attach(renderable, Nz::Matrix4f::Translate(obb.GetCenter()), DebugDrawOrder); + + entityDebug.UpdateDebugRenderable(option, std::move(renderable)); + break; + } + + case DebugDraw::GraphicsAABB: + { + auto indexVertexBuffers = GetBoxMesh(); + + Nz::InstancedRenderableRef renderable = new AABBDebugRenderable(entity, GetAABBMaterial(), indexVertexBuffers.first, indexVertexBuffers.second); + renderable->SetPersistent(false); + + entityGfx.Attach(renderable, Nz::Matrix4f::Identity(), DebugDrawOrder); + + entityDebug.UpdateDebugRenderable(option, std::move(renderable)); + break; + } + + case DebugDraw::GraphicsOBB: + { + auto indexVertexBuffers = GetBoxMesh(); + + Nz::InstancedRenderableRef renderable = new OBBDebugRenderable(entity, GetOBBMaterial(), indexVertexBuffers.first, indexVertexBuffers.second); + renderable->SetPersistent(false); + + entityGfx.Attach(renderable, Nz::Matrix4f::Identity(), DebugDrawOrder); + + entityDebug.UpdateDebugRenderable(option, std::move(renderable)); + break; + } + + default: + break; + } + } + } + + DebugDrawFlags flagsToDisable = enabledFlags & ~flags; + for (std::size_t i = 0; i <= static_cast(DebugDraw::Max); ++i) + { + DebugDraw option = static_cast(i); + if (flagsToDisable & option) + entityGfx.Detach(entityDebug.GetDebugRenderable(option)); + } + + entityDebug.UpdateEnabledFlags(flags); + } + + void DebugSystem::OnUpdate(float elapsedTime) + { + // Nothing to do + } + + Nz::InstancedRenderableRef DebugSystem::GenerateBox(Nz::Boxf box) + { + Nz::MeshRef mesh = Nz::Mesh::New(); + mesh->CreateStatic(); + + mesh->BuildSubMesh(Nz::Primitive::Box(box.GetLengths())); + mesh->SetMaterialCount(1); + + Nz::ModelRef model = Nz::Model::New(); + model->SetMesh(mesh); + model->SetMaterial(0, GetOBBMaterial()); + + return model; + } + + Nz::InstancedRenderableRef DebugSystem::GenerateCollision3DMesh(Entity* entity) + { + if (entity->HasComponent()) + { + CollisionComponent3D& entityCollision = entity->GetComponent(); + const Nz::Collider3DRef& geom = entityCollision.GetGeom(); + + std::vector vertices; + std::vector indices; + + geom->ForEachPolygon([&](const float* polygonVertices, std::size_t vertexCount) + { + std::size_t firstIndex = vertices.size(); + + for (std::size_t i = 0; i < vertexCount; ++i) + { + const float* vertexData = &polygonVertices[i * 3]; + vertices.emplace_back(vertexData[0], vertexData[1], vertexData[2]); + } + + for (std::size_t i = 0; i < vertexCount - 1; ++i) + { + indices.push_back(firstIndex + i); + indices.push_back(firstIndex + i + 1); + } + + indices.push_back(firstIndex + vertexCount - 1); + indices.push_back(firstIndex); + }); + + Nz::IndexBufferRef indexBuffer = Nz::IndexBuffer::New(vertices.size() > 0xFFFF, indices.size(), Nz::DataStorage_Hardware, 0); + Nz::IndexMapper indexMapper(indexBuffer, Nz::BufferAccess_WriteOnly); + + Nz::IndexIterator indexPtr = indexMapper.begin(); + for (std::size_t index : indices) + *indexPtr++ = static_cast(index); + + indexMapper.Unmap(); + + Nz::VertexBufferRef vertexBuffer = Nz::VertexBuffer::New(Nz::VertexDeclaration::Get(Nz::VertexLayout_XYZ), vertices.size(), Nz::DataStorage_Hardware, 0); + vertexBuffer->Fill(vertices.data(), 0, vertices.size()); + + Nz::MeshRef mesh = Nz::Mesh::New(); + mesh->CreateStatic(); + + Nz::StaticMeshRef subMesh = Nz::StaticMesh::New(mesh); + subMesh->Create(vertexBuffer); + subMesh->SetIndexBuffer(indexBuffer); + subMesh->SetPrimitiveMode(Nz::PrimitiveMode_LineList); + subMesh->SetMaterialIndex(0); + subMesh->GenerateAABB(); + + mesh->SetMaterialCount(1); + mesh->AddSubMesh(subMesh); + + Nz::ModelRef model = Nz::Model::New(); + model->SetMesh(mesh); + model->SetMaterial(0, GetCollisionMaterial()); + + return model; + } + else + return nullptr; + } + + Nz::MaterialRef DebugSystem::GetAABBMaterial() + { + if (!m_aabbMaterial) + { + m_aabbMaterial = Nz::Material::New(); + m_aabbMaterial->EnableFaceCulling(false); + m_aabbMaterial->EnableDepthBuffer(true); + m_aabbMaterial->SetDiffuseColor(Nz::Color::Red); + m_aabbMaterial->SetFaceFilling(Nz::FaceFilling_Line); + } + + return m_aabbMaterial; + } + + Nz::MaterialRef DebugSystem::GetCollisionMaterial() + { + if (!m_collisionMaterial) + { + m_collisionMaterial = Nz::Material::New(); + m_collisionMaterial->EnableFaceCulling(false); + m_collisionMaterial->EnableDepthBuffer(true); + m_collisionMaterial->SetDiffuseColor(Nz::Color::Blue); + m_collisionMaterial->SetFaceFilling(Nz::FaceFilling_Line); + } + + return m_collisionMaterial; + } + + Nz::MaterialRef DebugSystem::GetOBBMaterial() + { + if (!m_obbMaterial) + { + m_obbMaterial = Nz::Material::New(); + m_obbMaterial->EnableFaceCulling(false); + m_obbMaterial->EnableDepthBuffer(true); + m_obbMaterial->SetDiffuseColor(Nz::Color::Green); + m_obbMaterial->SetFaceFilling(Nz::FaceFilling_Line); + } + + return m_obbMaterial; + } + + SystemIndex DebugSystem::systemIndex; +} diff --git a/SDK/src/NDK/World.cpp b/SDK/src/NDK/World.cpp index 7582461b9..bfbe0140c 100644 --- a/SDK/src/NDK/World.cpp +++ b/SDK/src/NDK/World.cpp @@ -11,6 +11,7 @@ #include #ifndef NDK_SERVER +#include #include #include #include @@ -47,6 +48,7 @@ namespace Ndk AddSystem(); #ifndef NDK_SERVER + AddSystem(); AddSystem(); AddSystem(); AddSystem(); diff --git a/include/Nazara/Core.hpp b/include/Nazara/Core.hpp index b4481b1a6..515d8c545 100644 --- a/include/Nazara/Core.hpp +++ b/include/Nazara/Core.hpp @@ -88,6 +88,7 @@ #include #include #include +#include #include #include From a48dc11063e8c6d88b808945396bd2f80c6f5fba Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 14 Apr 2018 00:08:50 +0200 Subject: [PATCH 003/194] Fix compilation in server mode --- build/scripts/tools/ndk_server.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/scripts/tools/ndk_server.lua b/build/scripts/tools/ndk_server.lua index cea295f7e..e235b1343 100644 --- a/build/scripts/tools/ndk_server.lua +++ b/build/scripts/tools/ndk_server.lua @@ -27,6 +27,8 @@ TOOL.FilesExcluded = { "../SDK/**/CameraComponent.*", "../SDK/**/Canvas.*", "../SDK/**/Console.*", + "../SDK/**/DebugComponent.*", + "../SDK/**/DebugSystem.*", "../SDK/**/GraphicsComponent.*", "../SDK/**/LightComponent.*", "../SDK/**/ListenerComponent.*", From 3362a4f1600450662d0fbde5b92cc2154de67cf9 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 14 Apr 2018 00:09:07 +0200 Subject: [PATCH 004/194] Sdk/DebugSystem: Fix some warnings --- SDK/src/NDK/Systems/DebugSystem.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 61dcae0a8..11d286064 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -130,8 +130,8 @@ namespace Ndk } }; - m_boxMeshIndexBuffer = Nz::IndexBuffer::New(false, indices.size(), Nz::DataStorage_Hardware, 0); - m_boxMeshIndexBuffer->Fill(indices.data(), 0, indices.size()); + m_boxMeshIndexBuffer = Nz::IndexBuffer::New(false, Nz::UInt32(indices.size()), Nz::DataStorage_Hardware, 0); + m_boxMeshIndexBuffer->Fill(indices.data(), 0, Nz::UInt32(indices.size())); } if (!m_boxMeshVertexBuffer) @@ -151,8 +151,8 @@ namespace Ndk } }; - m_boxMeshVertexBuffer = Nz::VertexBuffer::New(Nz::VertexDeclaration::Get(Nz::VertexLayout_XYZ), positions.size(), Nz::DataStorage_Hardware, 0); - m_boxMeshVertexBuffer->Fill(positions.data(), 0, positions.size()); + m_boxMeshVertexBuffer = Nz::VertexBuffer::New(Nz::VertexDeclaration::Get(Nz::VertexLayout_XYZ), Nz::UInt32(positions.size()), Nz::DataStorage_Hardware, 0); + m_boxMeshVertexBuffer->Fill(positions.data(), 0, Nz::UInt32(positions.size())); } return { m_boxMeshIndexBuffer, m_boxMeshVertexBuffer }; @@ -282,7 +282,7 @@ namespace Ndk indices.push_back(firstIndex); }); - Nz::IndexBufferRef indexBuffer = Nz::IndexBuffer::New(vertices.size() > 0xFFFF, indices.size(), Nz::DataStorage_Hardware, 0); + Nz::IndexBufferRef indexBuffer = Nz::IndexBuffer::New(vertices.size() > 0xFFFF, Nz::UInt32(indices.size()), Nz::DataStorage_Hardware, 0); Nz::IndexMapper indexMapper(indexBuffer, Nz::BufferAccess_WriteOnly); Nz::IndexIterator indexPtr = indexMapper.begin(); @@ -291,8 +291,8 @@ namespace Ndk indexMapper.Unmap(); - Nz::VertexBufferRef vertexBuffer = Nz::VertexBuffer::New(Nz::VertexDeclaration::Get(Nz::VertexLayout_XYZ), vertices.size(), Nz::DataStorage_Hardware, 0); - vertexBuffer->Fill(vertices.data(), 0, vertices.size()); + Nz::VertexBufferRef vertexBuffer = Nz::VertexBuffer::New(Nz::VertexDeclaration::Get(Nz::VertexLayout_XYZ), Nz::UInt32(vertices.size()), Nz::DataStorage_Hardware, 0); + vertexBuffer->Fill(vertices.data(), 0, Nz::UInt32(vertices.size())); Nz::MeshRef mesh = Nz::Mesh::New(); mesh->CreateStatic(); From 69c61ba7463ee1f1ef72908574d9bf278b1409cb Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Apr 2018 02:27:49 +0200 Subject: [PATCH 005/194] Utility/AbstractTextDrawer: Add GetLineGlyphCount --- include/Nazara/Utility/AbstractTextDrawer.hpp | 3 +++ include/Nazara/Utility/AbstractTextDrawer.inl | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 include/Nazara/Utility/AbstractTextDrawer.inl diff --git a/include/Nazara/Utility/AbstractTextDrawer.hpp b/include/Nazara/Utility/AbstractTextDrawer.hpp index 2ef500aab..c52051a5c 100644 --- a/include/Nazara/Utility/AbstractTextDrawer.hpp +++ b/include/Nazara/Utility/AbstractTextDrawer.hpp @@ -34,6 +34,7 @@ namespace Nz virtual std::size_t GetGlyphCount() const = 0; virtual const Line& GetLine(std::size_t index) const = 0; virtual std::size_t GetLineCount() const = 0; + inline std::size_t GetLineGlyphCount(std::size_t index) const; struct Glyph { @@ -53,4 +54,6 @@ namespace Nz }; } +#include + #endif // NAZARA_ABSTRACTTEXTDRAWER_HPP diff --git a/include/Nazara/Utility/AbstractTextDrawer.inl b/include/Nazara/Utility/AbstractTextDrawer.inl new file mode 100644 index 000000000..a10a16892 --- /dev/null +++ b/include/Nazara/Utility/AbstractTextDrawer.inl @@ -0,0 +1,23 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Utility module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include + +namespace Nz +{ + inline std::size_t AbstractTextDrawer::GetLineGlyphCount(std::size_t index) const + { + std::size_t lineCount = GetLineCount(); + const auto& lineInfo = GetLine(index); + if (index == lineCount - 1) + return GetGlyphCount() - lineInfo.glyphIndex; + + const auto& nextLineInfo = GetLine(index + 1); + + return nextLineInfo.glyphIndex - lineInfo.glyphIndex; + } +} + +#include From d253ec1adc61418dcfba1f54ca17fe7c626f78b1 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Apr 2018 02:30:36 +0200 Subject: [PATCH 006/194] Sdk/GraphicsComponent: Fix bounding volume when using a local matrix --- SDK/src/NDK/Components/GraphicsComponent.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SDK/src/NDK/Components/GraphicsComponent.cpp b/SDK/src/NDK/Components/GraphicsComponent.cpp index f8b4e468d..f865e749b 100644 --- a/SDK/src/NDK/Components/GraphicsComponent.cpp +++ b/SDK/src/NDK/Components/GraphicsComponent.cpp @@ -277,7 +277,8 @@ namespace Ndk { Nz::Boxf localBox = boundingVolume.obb.localBox; Nz::Vector3f newPos = r.data.localMatrix * localBox.GetPosition(); - Nz::Vector3f newLengths = r.data.localMatrix * localBox.GetLengths(); + Nz::Vector3f newCorner = r.data.localMatrix * (localBox.GetPosition() + localBox.GetLengths()); + Nz::Vector3f newLengths = newCorner - newPos; boundingVolume.Set(Nz::Boxf(newPos.x, newPos.y, newPos.z, newLengths.x, newLengths.y, newLengths.z)); } From bf0b8e9c761b14f48f4fc87691ef41d8f2b1e130 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Apr 2018 02:31:51 +0200 Subject: [PATCH 007/194] Graphics: Fix clear being parasited by scissor operations --- src/Nazara/Graphics/DeferredGeometryPass.cpp | 1 + src/Nazara/Graphics/DepthRenderTechnique.cpp | 12 +++++++++--- src/Nazara/Graphics/ForwardRenderTechnique.cpp | 5 +++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Nazara/Graphics/DeferredGeometryPass.cpp b/src/Nazara/Graphics/DeferredGeometryPass.cpp index ef7586259..dcea7d305 100644 --- a/src/Nazara/Graphics/DeferredGeometryPass.cpp +++ b/src/Nazara/Graphics/DeferredGeometryPass.cpp @@ -85,6 +85,7 @@ namespace Nz m_GBufferRTT->SetColorTargets({0, 1, 2}); // G-Buffer Renderer::SetTarget(m_GBufferRTT); + Renderer::SetScissorRect(Recti(0, 0, m_dimensions.x, m_dimensions.y)); Renderer::SetViewport(Recti(0, 0, m_dimensions.x, m_dimensions.y)); Renderer::SetRenderStates(m_clearStates); diff --git a/src/Nazara/Graphics/DepthRenderTechnique.cpp b/src/Nazara/Graphics/DepthRenderTechnique.cpp index 6c858f51c..5435d7497 100644 --- a/src/Nazara/Graphics/DepthRenderTechnique.cpp +++ b/src/Nazara/Graphics/DepthRenderTechnique.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -63,15 +64,20 @@ namespace Nz * \param sceneData Data of the scene */ - void DepthRenderTechnique::Clear(const SceneData& /*sceneData*/) const + void DepthRenderTechnique::Clear(const SceneData& sceneData) const { + const RenderTarget* renderTarget = sceneData.viewer->GetTarget(); + Recti fullscreenScissorRect = Recti(Vector2i(renderTarget->GetSize())); + + Renderer::SetScissorRect(fullscreenScissorRect); + Renderer::Enable(RendererParameter_DepthBuffer, true); Renderer::Enable(RendererParameter_DepthWrite, true); Renderer::Clear(RendererBuffer_Depth); // Just in case the background does render depth - //if (sceneData.background) - // sceneData.background->Draw(sceneData.viewer); + if (sceneData.background) + sceneData.background->Draw(sceneData.viewer); } /*! diff --git a/src/Nazara/Graphics/ForwardRenderTechnique.cpp b/src/Nazara/Graphics/ForwardRenderTechnique.cpp index 142e559eb..cf3611362 100644 --- a/src/Nazara/Graphics/ForwardRenderTechnique.cpp +++ b/src/Nazara/Graphics/ForwardRenderTechnique.cpp @@ -69,6 +69,11 @@ namespace Nz void ForwardRenderTechnique::Clear(const SceneData& sceneData) const { + const RenderTarget* renderTarget = sceneData.viewer->GetTarget(); + Recti fullscreenScissorRect = Recti(Vector2i(renderTarget->GetSize())); + + Renderer::SetScissorRect(fullscreenScissorRect); + Renderer::Enable(RendererParameter_DepthBuffer, true); Renderer::Enable(RendererParameter_DepthWrite, true); Renderer::Clear(RendererBuffer_Depth); From 347f8cc9865d0530b5754db7936be65cd5b3d4e6 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Apr 2018 02:34:21 +0200 Subject: [PATCH 008/194] Utility/Font: Fix handling of whitespace glyphs --- ChangeLog.md | 2 ++ src/Nazara/Utility/Font.cpp | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index c724b0117..6b1641293 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -86,6 +86,8 @@ Nazara Engine: - Fixed Billboard bounding volume - Fixed Directory::GetResultSize and Directory::IsResultDirectory on Posix systems - Graphics module now register "White2D" and "WhiteCubemap" textures to the TextureLibrary (respectively a 1x1 texture 2D and a 1x1 texture cubemap) +- Added AbstractTextDrawer::GetLineGlyphCount, which returns the number of glyph part of the line +- Fixed Font handling of whitespace glyphs (which were triggering an error) Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Utility/Font.cpp b/src/Nazara/Utility/Font.cpp index 63cc28495..a0264b9ee 100644 --- a/src/Nazara/Utility/Font.cpp +++ b/src/Nazara/Utility/Font.cpp @@ -514,8 +514,16 @@ namespace Nz FontGlyph fontGlyph; if (ExtractGlyph(characterSize, character, style, &fontGlyph)) { - glyph.atlasRect.width = fontGlyph.image.GetWidth(); - glyph.atlasRect.height = fontGlyph.image.GetHeight(); + if (fontGlyph.image.IsValid()) + { + glyph.atlasRect.width = fontGlyph.image.GetWidth(); + glyph.atlasRect.height = fontGlyph.image.GetHeight(); + } + else + { + glyph.atlasRect.width = 0; + glyph.atlasRect.height = 0; + } // Insertion du rectangle dans l'un des atlas if (glyph.atlasRect.width > 0 && glyph.atlasRect.height > 0) // Si l'image contient quelque chose From 9f95a6122b7d6ebf59e1acbdbdbeebf2265f5905 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Apr 2018 02:35:51 +0200 Subject: [PATCH 009/194] Graphics/MaterialPipeline: Disable depth sorting for Translucent2D pipeline --- src/Nazara/Graphics/MaterialPipeline.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Nazara/Graphics/MaterialPipeline.cpp b/src/Nazara/Graphics/MaterialPipeline.cpp index c1313b05a..6f2d5f173 100644 --- a/src/Nazara/Graphics/MaterialPipeline.cpp +++ b/src/Nazara/Graphics/MaterialPipeline.cpp @@ -199,7 +199,7 @@ namespace Nz pipelineInfo.blending = true; pipelineInfo.depthWrite = false; pipelineInfo.faceCulling = false; - pipelineInfo.depthSorting = true; + pipelineInfo.depthSorting = false; pipelineInfo.scissorTest = true; pipelineInfo.dstBlend = BlendFunc_InvSrcAlpha; pipelineInfo.srcBlend = BlendFunc_SrcAlpha; From 65c6996ccda6e462459ae187a886fc86cdefaa09 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Apr 2018 02:39:19 +0200 Subject: [PATCH 010/194] SDK/TextAreaWidget: Add support for line selection --- ChangeLog.md | 3 + SDK/include/NDK/Widgets/TextAreaWidget.hpp | 21 +- SDK/include/NDK/Widgets/TextAreaWidget.inl | 78 +++++-- SDK/src/NDK/Widgets/TextAreaWidget.cpp | 250 +++++++++++++++++---- 4 files changed, 280 insertions(+), 72 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 6b1641293..51476899b 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -88,6 +88,7 @@ Nazara Engine: - Graphics module now register "White2D" and "WhiteCubemap" textures to the TextureLibrary (respectively a 1x1 texture 2D and a 1x1 texture cubemap) - Added AbstractTextDrawer::GetLineGlyphCount, which returns the number of glyph part of the line - Fixed Font handling of whitespace glyphs (which were triggering an error) +- ⚠️ Translucent2D pipeline no longer has depth sorting Nazara Development Kit: - Added ImageWidget (#139) @@ -132,6 +133,8 @@ Nazara Development Kit: - ⚠️ Rewrote all render queue system, which should be more efficient, take scissor box into account - ⚠️ All widgets are now bound to a scissor box when rendering - Add DebugComponent (a component able to show aabb/obb/collision mesh) +- ⚠️ TextAreaWidget now support text selection (WIP) +- ⚠️ TextAreaWidget::GetHoveredGlyph now returns a two-dimensional position instead of a single glyph position # 0.4: diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.hpp b/SDK/include/NDK/Widgets/TextAreaWidget.hpp index e0f08053e..e7cdc2f7a 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.hpp +++ b/SDK/include/NDK/Widgets/TextAreaWidget.hpp @@ -11,6 +11,7 @@ #include #include #include +#include namespace Ndk { @@ -30,15 +31,20 @@ namespace Ndk inline void EnableMultiline(bool enable = true); + void EraseSelection(); + inline unsigned int GetCharacterSize() const; inline const Nz::Vector2ui& GetCursorPosition() const; + inline Nz::Vector2ui GetCursorPosition(std::size_t glyphIndex) const; inline const Nz::String& GetDisplayText() const; inline EchoMode GetEchoMode() const; inline std::size_t GetGlyphIndex(const Nz::Vector2ui& cursorPosition); inline const Nz::String& GetText() const; inline const Nz::Color& GetTextColor() const; - std::size_t GetHoveredGlyph(float x, float y) const; + Nz::Vector2ui GetHoveredGlyph(float x, float y) const; + + inline bool HasSelection() const; inline bool IsMultilineEnabled() const; inline bool IsReadOnly() const; @@ -53,6 +59,7 @@ namespace Ndk inline void SetCursorPosition(Nz::Vector2ui cursorPosition); inline void SetEchoMode(EchoMode echoMode); inline void SetReadOnly(bool readOnly = true); + inline void SetSelection(Nz::Vector2ui fromPosition, Nz::Vector2ui toPosition); inline void SetText(const Nz::String& text); inline void SetTextColor(const Nz::Color& text); @@ -64,6 +71,8 @@ namespace Ndk NazaraSignal(OnTextAreaCursorMove, const TextAreaWidget* /*textArea*/, std::size_t* /*newCursorPosition*/); NazaraSignal(OnTextAreaKeyBackspace, const TextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); NazaraSignal(OnTextAreaKeyDown, const TextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); + NazaraSignal(OnTextAreaKeyEnd, const TextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); + NazaraSignal(OnTextAreaKeyHome, const TextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); NazaraSignal(OnTextAreaKeyLeft, const TextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); NazaraSignal(OnTextAreaKeyReturn, const TextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); NazaraSignal(OnTextAreaKeyRight, const TextAreaWidget* /*textArea*/, bool* /*ignoreDefaultAction*/); @@ -79,6 +88,9 @@ namespace Ndk bool OnKeyPressed(const Nz::WindowEvent::KeyEvent& key) override; void OnKeyReleased(const Nz::WindowEvent::KeyEvent& key) override; void OnMouseButtonPress(int /*x*/, int /*y*/, Nz::Mouse::Button button) override; + void OnMouseButtonRelease(int /*x*/, int /*y*/, Nz::Mouse::Button button) override; + void OnMouseEnter() override; + void OnMouseMoved(int x, int y, int deltaX, int deltaY) override; void OnTextEntered(char32_t character, bool repeated) override; void RefreshCursor(); @@ -88,10 +100,13 @@ namespace Ndk EntityHandle m_cursorEntity; EntityHandle m_textEntity; Nz::SimpleTextDrawer m_drawer; - Nz::SpriteRef m_cursorSprite; Nz::String m_text; Nz::TextSpriteRef m_textSprite; - Nz::Vector2ui m_cursorPosition; + Nz::Vector2ui m_cursorPositionBegin; + Nz::Vector2ui m_cursorPositionEnd; + Nz::Vector2ui m_selectionCursor; + std::vector m_cursorSprites; + bool m_isMouseButtonDown; bool m_multiLineEnabled; bool m_readOnly; }; diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.inl b/SDK/include/NDK/Widgets/TextAreaWidget.inl index 07daf7896..274d46a02 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.inl +++ b/SDK/include/NDK/Widgets/TextAreaWidget.inl @@ -8,7 +8,8 @@ namespace Ndk { inline void TextAreaWidget::Clear() { - m_cursorPosition.MakeZero(); + m_cursorPositionBegin.MakeZero(); + m_cursorPositionEnd.MakeZero(); m_drawer.Clear(); m_text.Clear(); m_textSprite->Update(m_drawer); @@ -29,7 +30,30 @@ namespace Ndk inline const Nz::Vector2ui& TextAreaWidget::GetCursorPosition() const { - return m_cursorPosition; + return m_cursorPositionBegin; + } + + Nz::Vector2ui TextAreaWidget::GetCursorPosition(std::size_t glyphIndex) const + { + glyphIndex = std::min(glyphIndex, m_drawer.GetGlyphCount()); + + std::size_t lineCount = m_drawer.GetLineCount(); + std::size_t line = 0U; + for (std::size_t i = line + 1; i < lineCount; ++i) + { + if (m_drawer.GetLine(i).glyphIndex > glyphIndex) + break; + + line = i; + } + + const auto& lineInfo = m_drawer.GetLine(line); + + Nz::Vector2ui cursorPos; + cursorPos.y = static_cast(line); + cursorPos.x = static_cast(glyphIndex - lineInfo.glyphIndex); + + return cursorPos; } inline const Nz::String& TextAreaWidget::GetDisplayText() const @@ -63,7 +87,12 @@ namespace Ndk return m_drawer.GetColor(); } - inline bool Ndk::TextAreaWidget::IsMultilineEnabled() const + inline bool TextAreaWidget::HasSelection() const + { + return m_cursorPositionBegin != m_cursorPositionEnd; + } + + inline bool TextAreaWidget::IsMultilineEnabled() const { return m_multiLineEnabled; } @@ -75,7 +104,7 @@ namespace Ndk inline void TextAreaWidget::MoveCursor(int offset) { - std::size_t cursorGlyph = GetGlyphIndex(m_cursorPosition); + std::size_t cursorGlyph = GetGlyphIndex(m_cursorPositionBegin); if (offset >= 0) SetCursorPosition(cursorGlyph + static_cast(offset)); else @@ -104,7 +133,7 @@ namespace Ndk } }; - Nz::Vector2ui cursorPosition = m_cursorPosition; + Nz::Vector2ui cursorPosition = m_cursorPositionBegin; cursorPosition.x = ClampOffset(static_cast(cursorPosition.x), offset.x); cursorPosition.y = ClampOffset(static_cast(cursorPosition.y), offset.y); @@ -120,22 +149,8 @@ namespace Ndk { OnTextAreaCursorMove(this, &glyphIndex); - glyphIndex = std::min(glyphIndex, m_drawer.GetGlyphCount()); - - std::size_t lineCount = m_drawer.GetLineCount(); - std::size_t line = 0U; - for (std::size_t i = line + 1; i < lineCount; ++i) - { - if (m_drawer.GetLine(i).glyphIndex > glyphIndex) - break; - - line = i; - } - - const auto& lineInfo = m_drawer.GetLine(line); - - m_cursorPosition.y = static_cast(line); - m_cursorPosition.x = static_cast(glyphIndex - lineInfo.glyphIndex); + m_cursorPositionBegin = GetCursorPosition(glyphIndex); + m_cursorPositionEnd = m_cursorPositionBegin; RefreshCursor(); } @@ -146,7 +161,7 @@ namespace Ndk if (cursorPosition.y >= lineCount) cursorPosition.y = static_cast(lineCount - 1); - m_cursorPosition = cursorPosition; + m_cursorPositionBegin = cursorPosition; const auto& lineInfo = m_drawer.GetLine(cursorPosition.y); if (cursorPosition.y + 1 < lineCount) @@ -155,6 +170,8 @@ namespace Ndk cursorPosition.x = std::min(cursorPosition.x, static_cast(nextLineInfo.glyphIndex - lineInfo.glyphIndex - 1)); } + m_cursorPositionEnd = m_cursorPositionBegin; + std::size_t glyphIndex = lineInfo.glyphIndex + cursorPosition.x; OnTextAreaCursorMove(this, &glyphIndex); @@ -175,6 +192,23 @@ namespace Ndk m_cursorEntity->Enable(!m_readOnly && HasFocus()); } + inline void TextAreaWidget::SetSelection(Nz::Vector2ui fromPosition, Nz::Vector2ui toPosition) + { + ///TODO: Check if position are valid + + // Ensure begin is before end + if (toPosition.y < fromPosition.y || (toPosition.y == fromPosition.y && toPosition.x < fromPosition.x)) + std::swap(fromPosition, toPosition); + + if (m_cursorPositionBegin != fromPosition || m_cursorPositionEnd != toPosition) + { + m_cursorPositionBegin = fromPosition; + m_cursorPositionEnd = toPosition; + + RefreshCursor(); + } + } + inline void TextAreaWidget::SetText(const Nz::String& text) { m_text = text; diff --git a/SDK/src/NDK/Widgets/TextAreaWidget.cpp b/SDK/src/NDK/Widgets/TextAreaWidget.cpp index b750dd2f2..764a328d8 100644 --- a/SDK/src/NDK/Widgets/TextAreaWidget.cpp +++ b/SDK/src/NDK/Widgets/TextAreaWidget.cpp @@ -12,16 +12,14 @@ namespace Ndk TextAreaWidget::TextAreaWidget(BaseWidget* parent) : BaseWidget(parent), m_echoMode(EchoMode_Normal), - m_cursorPosition(0U, 0U), + m_cursorPositionBegin(0U, 0U), + m_cursorPositionEnd(0U, 0U), + m_isMouseButtonDown(false), m_multiLineEnabled(false), m_readOnly(false) { - m_cursorSprite = Nz::Sprite::New(); - m_cursorSprite->SetColor(Nz::Color::Black); - m_cursorSprite->SetSize(1.f, float(m_drawer.GetFont()->GetSizeInfo(m_drawer.GetCharacterSize()).lineHeight)); - m_cursorEntity = CreateEntity(true); - m_cursorEntity->AddComponent().Attach(m_cursorSprite, 10); + m_cursorEntity->AddComponent(); m_cursorEntity->AddComponent().SetParent(this); m_cursorEntity->Enable(false); @@ -72,7 +70,29 @@ namespace Ndk OnTextChanged(this, m_text); } - std::size_t TextAreaWidget::GetHoveredGlyph(float x, float y) const + void TextAreaWidget::EraseSelection() + { + if (!HasSelection()) + return; + + std::size_t cursorGlyphBegin = GetGlyphIndex(m_cursorPositionBegin); + std::size_t cursorGlyphEnd = GetGlyphIndex(m_cursorPositionEnd); + + std::size_t textLength = m_text.GetLength(); + if (cursorGlyphBegin > textLength) + return; + + Nz::String newText; + if (cursorGlyphBegin > 0) + newText.Append(m_text.SubString(0, m_text.GetCharacterPosition(cursorGlyphBegin) - 1)); + + if (cursorGlyphEnd < textLength) + newText.Append(m_text.SubString(m_text.GetCharacterPosition(cursorGlyphEnd))); + + SetText(newText); + } + + Nz::Vector2ui TextAreaWidget::GetHoveredGlyph(float x, float y) const { std::size_t glyphCount = m_drawer.GetGlyphCount(); if (glyphCount > 0) @@ -88,7 +108,8 @@ namespace Ndk std::size_t upperLimit = (line != lineCount - 1) ? m_drawer.GetLine(line + 1).glyphIndex : glyphCount + 1; - std::size_t i = m_drawer.GetLine(line).glyphIndex; + std::size_t firstLineGlyph = m_drawer.GetLine(line).glyphIndex; + std::size_t i = firstLineGlyph; for (; i < upperLimit - 1; ++i) { Nz::Rectf bounds = m_drawer.GetGlyph(i).bounds; @@ -96,10 +117,10 @@ namespace Ndk break; } - return i; + return Nz::Vector2ui(i - firstLineGlyph, line); } - return 0; + return Nz::Vector2ui::Zero(); } void TextAreaWidget::ResizeToContent() @@ -109,7 +130,7 @@ namespace Ndk void TextAreaWidget::Write(const Nz::String& text) { - std::size_t cursorGlyph = GetGlyphIndex(m_cursorPosition); + std::size_t cursorGlyph = GetGlyphIndex(m_cursorPositionBegin); if (cursorGlyph >= m_drawer.GetGlyphCount()) { @@ -156,20 +177,27 @@ namespace Ndk { case Nz::Keyboard::Delete: { - std::size_t cursorGlyph = GetGlyphIndex(m_cursorPosition); + if (HasSelection()) + EraseSelection(); + else + { + std::size_t cursorGlyphBegin = GetGlyphIndex(m_cursorPositionBegin); + std::size_t cursorGlyphEnd = GetGlyphIndex(m_cursorPositionEnd); - std::size_t textLength = m_text.GetLength(); - if (cursorGlyph > textLength) - return true; + std::size_t textLength = m_text.GetLength(); + if (cursorGlyphBegin > textLength) + return true; - Nz::String newText; - if (cursorGlyph > 0) - newText.Append(m_text.SubString(0, m_text.GetCharacterPosition(cursorGlyph) - 1)); + Nz::String newText; + if (cursorGlyphBegin > 0) + newText.Append(m_text.SubString(0, m_text.GetCharacterPosition(cursorGlyphBegin) - 1)); - if (cursorGlyph < textLength) - newText.Append(m_text.SubString(m_text.GetCharacterPosition(cursorGlyph + 1))); + if (cursorGlyphEnd < textLength) + newText.Append(m_text.SubString(m_text.GetCharacterPosition(cursorGlyphEnd + 1))); + + SetText(newText); + } - SetText(newText); return true; } @@ -181,10 +209,38 @@ namespace Ndk if (ignoreDefaultAction) return true; + if (HasSelection()) + SetCursorPosition(m_cursorPositionEnd); + MoveCursor({0, 1}); return true; } + case Nz::Keyboard::End: + { + bool ignoreDefaultAction = false; + OnTextAreaKeyEnd(this, &ignoreDefaultAction); + + if (ignoreDefaultAction) + return true; + + const auto& lineInfo = m_drawer.GetLine(m_cursorPositionEnd.y); + SetCursorPosition({ m_drawer.GetLineGlyphCount(m_cursorPositionEnd.y), m_cursorPositionEnd.y }); + return true; + } + + case Nz::Keyboard::Home: + { + bool ignoreDefaultAction = false; + OnTextAreaKeyHome(this, &ignoreDefaultAction); + + if (ignoreDefaultAction) + return true; + + SetCursorPosition({ 0U, m_cursorPositionEnd.y }); + return true; + } + case Nz::Keyboard::Left: { bool ignoreDefaultAction = false; @@ -193,7 +249,11 @@ namespace Ndk if (ignoreDefaultAction) return true; - MoveCursor(-1); + if (HasSelection()) + SetCursorPosition(m_cursorPositionBegin); + else + MoveCursor(-1); + return true; } @@ -205,7 +265,11 @@ namespace Ndk if (ignoreDefaultAction) return true; - MoveCursor(1); + if (HasSelection()) + SetCursorPosition(m_cursorPositionEnd); + else + MoveCursor(1); + return true; } @@ -217,6 +281,9 @@ namespace Ndk if (ignoreDefaultAction) return true; + if (HasSelection()) + SetCursorPosition(m_cursorPositionBegin); + MoveCursor({0, -1}); return true; } @@ -237,7 +304,39 @@ namespace Ndk SetFocus(); const Padding& padding = GetPadding(); - SetCursorPosition(GetHoveredGlyph(float(x - padding.left), float(y - padding.top))); + Nz::Vector2ui hoveredGlyph = GetHoveredGlyph(float(x - padding.left), float(y - padding.top)); + + // Shift extends selection + if (Nz::Keyboard::IsKeyPressed(Nz::Keyboard::LShift) || Nz::Keyboard::IsKeyPressed(Nz::Keyboard::RShift)) + SetSelection(hoveredGlyph, m_selectionCursor); + else + { + SetCursorPosition(hoveredGlyph); + m_selectionCursor = m_cursorPositionBegin; + } + + m_isMouseButtonDown = true; + } + } + + void TextAreaWidget::OnMouseButtonRelease(int, int, Nz::Mouse::Button button) + { + if (button == Nz::Mouse::Left) + m_isMouseButtonDown = false; + } + + void TextAreaWidget::OnMouseEnter() + { + if (!Nz::Mouse::IsButtonPressed(Nz::Mouse::Left)) + m_isMouseButtonDown = false; + } + + void TextAreaWidget::OnMouseMoved(int x, int y, int deltaX, int deltaY) + { + if (m_isMouseButtonDown) + { + const Padding& padding = GetPadding(); + SetSelection(m_selectionCursor, GetHoveredGlyph(float(x - padding.left), float(y - padding.top))); } } @@ -253,20 +352,30 @@ namespace Ndk bool ignoreDefaultAction = false; OnTextAreaKeyBackspace(this, &ignoreDefaultAction); - std::size_t cursorGlyph = GetGlyphIndex(m_cursorPosition); - if (ignoreDefaultAction || cursorGlyph == 0) + std::size_t cursorGlyphBegin = GetGlyphIndex(m_cursorPositionBegin); + std::size_t cursorGlyphEnd = GetGlyphIndex(m_cursorPositionEnd); + + if (ignoreDefaultAction || cursorGlyphEnd == 0) break; - Nz::String newText; + // When a text is selected, delete key does the same as delete and leave the character behind it + if (HasSelection()) + EraseSelection(); + else + { + Nz::String newText; - if (cursorGlyph > 1) - newText.Append(m_text.SubString(0, m_text.GetCharacterPosition(cursorGlyph - 1) - 1)); + if (cursorGlyphBegin > 1) + newText.Append(m_text.SubString(0, m_text.GetCharacterPosition(cursorGlyphBegin - 1) - 1)); - if (cursorGlyph < m_text.GetLength()) - newText.Append(m_text.SubString(m_text.GetCharacterPosition(cursorGlyph))); + if (cursorGlyphEnd < m_text.GetLength()) + newText.Append(m_text.SubString(m_text.GetCharacterPosition(cursorGlyphEnd))); - MoveCursor(-1); - SetText(newText); + // Move cursor before setting text (to prevent SetText to move our cursor) + MoveCursor(-1); + + SetText(newText); + } break; } @@ -288,6 +397,9 @@ namespace Ndk if (Nz::Unicode::GetCategory(character) == Nz::Unicode::Category_Other_Control) break; + if (HasSelection()) + EraseSelection(); + Write(Nz::String::Unicode(character)); break; } @@ -299,24 +411,68 @@ namespace Ndk if (m_readOnly) return; - const auto& lineInfo = m_drawer.GetLine(m_cursorPosition.y); - std::size_t cursorGlyph = GetGlyphIndex(m_cursorPosition); + m_cursorEntity->GetComponent().SetPosition(GetContentOrigin()); - std::size_t glyphCount = m_drawer.GetGlyphCount(); - float position; - if (glyphCount > 0 && lineInfo.glyphIndex < cursorGlyph) + std::size_t selectionLineCount = m_cursorPositionEnd.y - m_cursorPositionBegin.y + 1; + std::size_t oldSpriteCount = m_cursorSprites.size(); + if (m_cursorSprites.size() != selectionLineCount) { - const auto& glyph = m_drawer.GetGlyph(std::min(cursorGlyph, glyphCount - 1)); - position = glyph.bounds.x; - if (cursorGlyph >= glyphCount) - position += glyph.bounds.width; + m_cursorSprites.resize(m_cursorPositionEnd.y - m_cursorPositionBegin.y + 1); + for (std::size_t i = oldSpriteCount; i < m_cursorSprites.size(); ++i) + { + m_cursorSprites[i] = Nz::Sprite::New(); + m_cursorSprites[i]->SetMaterial(Nz::Material::New("Translucent2D")); + } } - else - position = 0.f; - Nz::Vector2f contentOrigin = GetContentOrigin(); + float lineHeight = float(m_drawer.GetFont()->GetSizeInfo(m_drawer.GetCharacterSize()).lineHeight); - m_cursorEntity->GetComponent().SetPosition(contentOrigin.x + position, contentOrigin.y + lineInfo.bounds.y); + GraphicsComponent& gfxComponent = m_cursorEntity->GetComponent(); + gfxComponent.Clear(); + + for (unsigned int i = m_cursorPositionBegin.y; i <= m_cursorPositionEnd.y; ++i) + { + const auto& lineInfo = m_drawer.GetLine(i); + + Nz::SpriteRef& cursorSprite = m_cursorSprites[i - m_cursorPositionBegin.y]; + if (i == m_cursorPositionBegin.y || i == m_cursorPositionEnd.y) + { + auto GetGlyphPos = [&](std::size_t localGlyphPos) + { + std::size_t cursorGlyph = GetGlyphIndex({ localGlyphPos, i }); + + std::size_t glyphCount = m_drawer.GetGlyphCount(); + float position; + if (glyphCount > 0 && lineInfo.glyphIndex < cursorGlyph) + { + const auto& glyph = m_drawer.GetGlyph(std::min(cursorGlyph, glyphCount - 1)); + position = glyph.bounds.x; + if (cursorGlyph >= glyphCount) + position += glyph.bounds.width; + } + else + position = 0.f; + + return position; + }; + + float beginX = (i == m_cursorPositionBegin.y) ? GetGlyphPos(m_cursorPositionBegin.x) : 0.f; + float endX = (i == m_cursorPositionEnd.y) ? GetGlyphPos(m_cursorPositionEnd.x) : lineInfo.bounds.width; + float spriteSize = std::max(endX - beginX, 1.f); + + cursorSprite->SetColor((m_cursorPositionBegin == m_cursorPositionEnd) ? Nz::Color::Black : Nz::Color(0, 0, 0, 50)); + cursorSprite->SetSize(spriteSize, float(m_drawer.GetFont()->GetSizeInfo(m_drawer.GetCharacterSize()).lineHeight)); + + gfxComponent.Attach(cursorSprite, Nz::Matrix4f::Translate({ beginX, lineInfo.bounds.y, 0.f })); + } + else + { + cursorSprite->SetColor(Nz::Color(0, 0, 0, 50)); + cursorSprite->SetSize(lineInfo.bounds.width, float(m_drawer.GetFont()->GetSizeInfo(m_drawer.GetCharacterSize()).lineHeight)); + + gfxComponent.Attach(cursorSprite, Nz::Matrix4f::Translate({ 0.f, lineInfo.bounds.y, 0.f })); + } + } } void TextAreaWidget::UpdateDisplayText() @@ -335,6 +491,6 @@ namespace Ndk m_textSprite->Update(m_drawer); - SetCursorPosition(m_cursorPosition); //< Refresh cursor position (prevent it from being outside of the text) + SetCursorPosition(m_cursorPositionBegin); //< Refresh cursor position (prevent it from being outside of the text) } } From d68346ca1722ed693c42c1b454fb6ecc8094b9d8 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Apr 2018 02:42:12 +0200 Subject: [PATCH 011/194] Utility/SimpleTextDrawer: Fix line bounds --- ChangeLog.md | 1 + src/Nazara/Utility/SimpleTextDrawer.cpp | 46 +++++++++++-------------- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 51476899b..92b2acd6a 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -89,6 +89,7 @@ Nazara Engine: - Added AbstractTextDrawer::GetLineGlyphCount, which returns the number of glyph part of the line - Fixed Font handling of whitespace glyphs (which were triggering an error) - ⚠️ Translucent2D pipeline no longer has depth sorting +- Fixed SimpleTextDrawer line bounds Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Utility/SimpleTextDrawer.cpp b/src/Nazara/Utility/SimpleTextDrawer.cpp index 62df4412b..89accf012 100644 --- a/src/Nazara/Utility/SimpleTextDrawer.cpp +++ b/src/Nazara/Utility/SimpleTextDrawer.cpp @@ -354,42 +354,38 @@ namespace Nz { glyph.atlas = nullptr; - glyph.bounds.Set(float(m_drawPos.x), float(0.f), float(advance), float(sizeInfo.lineHeight)); + glyph.bounds.Set(float(m_drawPos.x), m_lines.back().bounds.y, float(advance), float(sizeInfo.lineHeight)); glyph.corners[0].Set(glyph.bounds.GetCorner(RectCorner_LeftTop)); glyph.corners[1].Set(glyph.bounds.GetCorner(RectCorner_RightTop)); glyph.corners[2].Set(glyph.bounds.GetCorner(RectCorner_LeftBottom)); glyph.corners[3].Set(glyph.bounds.GetCorner(RectCorner_RightBottom)); - - switch (character) - { - case '\n': - { - // Extend the line bounding rect to the last glyph it contains, thus extending upon all glyphs of the line - if (!m_glyphs.empty()) - { - Glyph& lastGlyph = m_glyphs.back(); - m_lines.back().bounds.ExtendTo(lastGlyph.bounds); - } - - // Reset cursor - advance = 0; - m_drawPos.x = 0; - m_drawPos.y += sizeInfo.lineHeight; - - m_workingBounds.ExtendTo(m_lines.back().bounds); - m_lines.emplace_back(Line{Rectf(0.f, float(sizeInfo.lineHeight * m_lines.size()), 0.f, float(sizeInfo.lineHeight)), m_glyphs.size() + 1}); - break; - } - } } m_lines.back().bounds.ExtendTo(glyph.bounds); + + switch (character) + { + case '\n': + { + // Reset cursor + advance = 0; + m_drawPos.x = 0; + m_drawPos.y += sizeInfo.lineHeight; + + m_workingBounds.ExtendTo(m_lines.back().bounds); + m_lines.emplace_back(Line{Rectf(0.f, float(sizeInfo.lineHeight * m_lines.size()), 0.f, float(sizeInfo.lineHeight)), m_glyphs.size() + 1}); + break; + } + + default: + m_drawPos.x += advance; + break; + } - m_drawPos.x += advance; m_glyphs.push_back(glyph); } - m_lines.back().bounds.ExtendTo(m_glyphs.back().bounds); + m_workingBounds.ExtendTo(m_lines.back().bounds); m_bounds.Set(Rectf(std::floor(m_workingBounds.x), std::floor(m_workingBounds.y), std::ceil(m_workingBounds.width), std::ceil(m_workingBounds.height))); From d234d661207284464ec75bee8a796a2ef94fc6d7 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Apr 2018 03:31:01 +0200 Subject: [PATCH 012/194] Fix compilation --- SDK/src/NDK/Widgets/TextAreaWidget.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDK/src/NDK/Widgets/TextAreaWidget.cpp b/SDK/src/NDK/Widgets/TextAreaWidget.cpp index 764a328d8..f10f57953 100644 --- a/SDK/src/NDK/Widgets/TextAreaWidget.cpp +++ b/SDK/src/NDK/Widgets/TextAreaWidget.cpp @@ -225,7 +225,7 @@ namespace Ndk return true; const auto& lineInfo = m_drawer.GetLine(m_cursorPositionEnd.y); - SetCursorPosition({ m_drawer.GetLineGlyphCount(m_cursorPositionEnd.y), m_cursorPositionEnd.y }); + SetCursorPosition({ static_cast(m_drawer.GetLineGlyphCount(m_cursorPositionEnd.y)), m_cursorPositionEnd.y }); return true; } @@ -437,7 +437,7 @@ namespace Ndk Nz::SpriteRef& cursorSprite = m_cursorSprites[i - m_cursorPositionBegin.y]; if (i == m_cursorPositionBegin.y || i == m_cursorPositionEnd.y) { - auto GetGlyphPos = [&](std::size_t localGlyphPos) + auto GetGlyphPos = [&](unsigned int localGlyphPos) { std::size_t cursorGlyph = GetGlyphIndex({ localGlyphPos, i }); From cb8f0417a7e8587932ac12eeb8c29b5c4b3bdf7e Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 18 Apr 2018 20:14:56 +0200 Subject: [PATCH 013/194] Core/Stream: Fix ReadLine behavior towards empty lines --- ChangeLog.md | 1 + src/Nazara/Core/Stream.cpp | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 92b2acd6a..4dfee067f 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -90,6 +90,7 @@ Nazara Engine: - Fixed Font handling of whitespace glyphs (which were triggering an error) - ⚠️ Translucent2D pipeline no longer has depth sorting - Fixed SimpleTextDrawer line bounds +- ⚠️ Stream::ReadLine will now returns empty lines if present in the file Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Core/Stream.cpp b/src/Nazara/Core/Stream.cpp index afc213814..31c42bd84 100644 --- a/src/Nazara/Core/Stream.cpp +++ b/src/Nazara/Core/Stream.cpp @@ -52,7 +52,7 @@ namespace Nz * * \param lineSize Maximum number of characters to read, or zero for no limit * - * \return Line containing characters + * \return Line read from file * * \remark With the text stream option, "\r\n" is treated as "\n" * \remark The line separator character is not returned as part of the string @@ -86,9 +86,6 @@ namespace Nz if (!SetCursorPos(GetCursorPos() - readSize + pos + 1)) NazaraWarning("Failed to reset cursor pos"); - - if (!line.IsEmpty()) - break; } else { From 7f9eb3771f1fa7bcb6e46691bfd5d27edba3e5d4 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 18 Apr 2018 20:20:23 +0200 Subject: [PATCH 014/194] Core/Stream: Fix infinite loop --- src/Nazara/Core/Stream.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Nazara/Core/Stream.cpp b/src/Nazara/Core/Stream.cpp index 31c42bd84..7ae91ed93 100644 --- a/src/Nazara/Core/Stream.cpp +++ b/src/Nazara/Core/Stream.cpp @@ -86,6 +86,8 @@ namespace Nz if (!SetCursorPos(GetCursorPos() - readSize + pos + 1)) NazaraWarning("Failed to reset cursor pos"); + + break; } else { From 9f74b71bd6bcac0227235466442aeae749d13858 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 21 Apr 2018 00:27:46 +0200 Subject: [PATCH 015/194] DebugSystem: Fix crash when asked to show collision mesh but entity has no collidercomponent --- SDK/src/NDK/Systems/DebugSystem.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 11d286064..d7ce4bb3d 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -181,9 +181,12 @@ namespace Ndk const Nz::Boxf& obb = entityGfx.GetBoundingVolume().obb.localBox; Nz::InstancedRenderableRef renderable = GenerateCollision3DMesh(entity); - renderable->SetPersistent(false); + if (renderable) + { + renderable->SetPersistent(false); - entityGfx.Attach(renderable, Nz::Matrix4f::Translate(obb.GetCenter()), DebugDrawOrder); + entityGfx.Attach(renderable, Nz::Matrix4f::Translate(obb.GetCenter()), DebugDrawOrder); + } entityDebug.UpdateDebugRenderable(option, std::move(renderable)); break; From 52f80a68cb8d5e3b244153237331bdb895197ba7 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 21 Apr 2018 00:28:57 +0200 Subject: [PATCH 016/194] Renderer/OpenGL: Enable GL_TEXTURE_CUBE_MAP_SEAMLESS --- ChangeLog.md | 1 + include/Nazara/Renderer/OpenGL.hpp | 1 + src/Nazara/Renderer/Context.cpp | 3 +++ src/Nazara/Renderer/OpenGL.cpp | 3 +++ 4 files changed, 8 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 7dc258795..27b762a17 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -92,6 +92,7 @@ Nazara Engine: - ⚠️ Translucent2D pipeline no longer has depth sorting - Fixed SimpleTextDrawer line bounds - ⚠️ Stream::ReadLine will now returns empty lines if present in the file +- Fixed cubemaps seams with OpenGL Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Renderer/OpenGL.hpp b/include/Nazara/Renderer/OpenGL.hpp index 7768930fb..c87426f12 100644 --- a/include/Nazara/Renderer/OpenGL.hpp +++ b/include/Nazara/Renderer/OpenGL.hpp @@ -38,6 +38,7 @@ namespace Nz OpenGLExtension_FP64, OpenGLExtension_GetProgramBinary, OpenGLExtension_SeparateShaderObjects, + OpenGLExtension_SeamlessCubeMap, OpenGLExtension_Shader_ImageLoadStore, OpenGLExtension_TextureCompression_s3tc, OpenGLExtension_TextureStorage, diff --git a/src/Nazara/Renderer/Context.cpp b/src/Nazara/Renderer/Context.cpp index 7fbad6002..90a17122d 100644 --- a/src/Nazara/Renderer/Context.cpp +++ b/src/Nazara/Renderer/Context.cpp @@ -163,6 +163,9 @@ namespace Nz return false; } + if (OpenGL::IsSupported(OpenGLExtension_SeamlessCubeMap)) + glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS); + if (m_parameters.antialiasingLevel > 0) glEnable(GL_MULTISAMPLE); diff --git a/src/Nazara/Renderer/OpenGL.cpp b/src/Nazara/Renderer/OpenGL.cpp index 7be48585f..0d6f07d2e 100644 --- a/src/Nazara/Renderer/OpenGL.cpp +++ b/src/Nazara/Renderer/OpenGL.cpp @@ -1174,6 +1174,9 @@ namespace Nz } } + // Seamless Cubemap Filtering + s_openGLextensions[OpenGLExtension_SeamlessCubeMap] = (s_openglVersion >= 320 || IsSupported("GL_ARB_seamless_cube_map")); + // Shader_ImageLoadStore s_openGLextensions[OpenGLExtension_Shader_ImageLoadStore] = (s_openglVersion >= 420 || IsSupported("GL_ARB_shader_image_load_store")); From 7244f1681c3c0d984f2d1536fb57484a6f4bca09 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 21 Apr 2018 00:29:53 +0200 Subject: [PATCH 017/194] Utility: Fix MD5/MTL/OBJ file parsing --- src/Nazara/Utility/Formats/MD5AnimParser.cpp | 3 +++ src/Nazara/Utility/Formats/MD5MeshParser.cpp | 3 +++ src/Nazara/Utility/Formats/MTLParser.cpp | 3 +++ src/Nazara/Utility/Formats/OBJParser.cpp | 3 +++ 4 files changed, 12 insertions(+) diff --git a/src/Nazara/Utility/Formats/MD5AnimParser.cpp b/src/Nazara/Utility/Formats/MD5AnimParser.cpp index 2d343f07c..10acc9975 100644 --- a/src/Nazara/Utility/Formats/MD5AnimParser.cpp +++ b/src/Nazara/Utility/Formats/MD5AnimParser.cpp @@ -250,6 +250,9 @@ namespace Nz m_lineCount++; m_currentLine = m_stream.ReadLine(); + if (m_currentLine.IsEmpty()) + continue; + m_currentLine = m_currentLine.SubStringTo("//"); // On ignore les commentaires m_currentLine.Simplify(); // Pour un traitement plus simple } diff --git a/src/Nazara/Utility/Formats/MD5MeshParser.cpp b/src/Nazara/Utility/Formats/MD5MeshParser.cpp index 0e719c90f..c6af0ed96 100644 --- a/src/Nazara/Utility/Formats/MD5MeshParser.cpp +++ b/src/Nazara/Utility/Formats/MD5MeshParser.cpp @@ -182,6 +182,9 @@ namespace Nz m_lineCount++; m_currentLine = m_stream.ReadLine(); + if (m_currentLine.IsEmpty()) + continue; + m_currentLine = m_currentLine.SubStringTo("//"); // On ignore les commentaires m_currentLine.Simplify(); // Pour un traitement plus simple m_currentLine.Trim(); diff --git a/src/Nazara/Utility/Formats/MTLParser.cpp b/src/Nazara/Utility/Formats/MTLParser.cpp index 29810b14a..31a377e38 100644 --- a/src/Nazara/Utility/Formats/MTLParser.cpp +++ b/src/Nazara/Utility/Formats/MTLParser.cpp @@ -450,6 +450,9 @@ namespace Nz m_lineCount++; m_currentLine = m_currentStream->ReadLine(); + if (m_currentLine.IsEmpty()) + continue; + m_currentLine = m_currentLine.SubStringTo("#"); // On ignore les commentaires m_currentLine.Simplify(); // Pour un traitement plus simple } diff --git a/src/Nazara/Utility/Formats/OBJParser.cpp b/src/Nazara/Utility/Formats/OBJParser.cpp index 6827641a9..b4766fc56 100644 --- a/src/Nazara/Utility/Formats/OBJParser.cpp +++ b/src/Nazara/Utility/Formats/OBJParser.cpp @@ -617,6 +617,9 @@ namespace Nz m_lineCount++; m_currentLine = m_currentStream->ReadLine(); + if (m_currentLine.IsEmpty()) + continue; + m_currentLine.Simplify(); // Simplify lines (convert multiple blanks into a single space and trims) } while (m_currentLine.IsEmpty()); From 2147156df9720d7072633c815761843e4c373c80 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 21 Apr 2018 00:30:21 +0200 Subject: [PATCH 018/194] RenderSystem: Temporary fix for lights not changing positions --- SDK/src/NDK/Systems/RenderSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index 9798731b7..01ae6b2ac 100644 --- a/SDK/src/NDK/Systems/RenderSystem.cpp +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -206,7 +206,7 @@ namespace Ndk std::size_t visibilityHash = m_drawableCulling.Cull(camComponent.GetFrustum(), &forceInvalidation); // Always regenerate renderqueue if particle groups are present for now (FIXME) - if (!m_particleGroups.empty()) + if (!m_lights.empty() || !m_particleGroups.empty()) forceInvalidation = true; if (camComponent.UpdateVisibility(visibilityHash) || m_forceRenderQueueInvalidation || forceInvalidation) From 8ab1462402ad3797c18f3c78fe6f571830070231 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 22 Apr 2018 12:33:36 +0200 Subject: [PATCH 019/194] Core/HandledObject: Make move constructor/assignation operator noexception --- ChangeLog.md | 1 + include/Nazara/Core/HandledObject.hpp | 6 +++--- include/Nazara/Core/HandledObject.inl | 6 +++--- include/Nazara/Core/ObjectHandle.hpp | 4 ++-- include/Nazara/Core/ObjectHandle.inl | 4 ++-- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 27b762a17..8a71843c4 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -93,6 +93,7 @@ Nazara Engine: - Fixed SimpleTextDrawer line bounds - ⚠️ Stream::ReadLine will now returns empty lines if present in the file - Fixed cubemaps seams with OpenGL +- HandledObject movement constructor/assignement operator are now marked noexcept Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Core/HandledObject.hpp b/include/Nazara/Core/HandledObject.hpp index 4377377de..633f7e9fe 100644 --- a/include/Nazara/Core/HandledObject.hpp +++ b/include/Nazara/Core/HandledObject.hpp @@ -23,16 +23,16 @@ namespace Nz public: HandledObject() = default; HandledObject(const HandledObject& object); - HandledObject(HandledObject&& object); + HandledObject(HandledObject&& object) noexcept; ~HandledObject(); ObjectHandle CreateHandle(); HandledObject& operator=(const HandledObject& object); - HandledObject& operator=(HandledObject&& object); + HandledObject& operator=(HandledObject&& object) noexcept; protected: - void UnregisterAllHandles(); + void UnregisterAllHandles() noexcept; private: void RegisterHandle(ObjectHandle* handle); diff --git a/include/Nazara/Core/HandledObject.inl b/include/Nazara/Core/HandledObject.inl index 146e1fdd3..3349fa7e1 100644 --- a/include/Nazara/Core/HandledObject.inl +++ b/include/Nazara/Core/HandledObject.inl @@ -34,7 +34,7 @@ namespace Nz * \param object HandledObject to move into this */ template - HandledObject::HandledObject(HandledObject&& object) : + HandledObject::HandledObject(HandledObject&& object) noexcept : m_handles(std::move(object.m_handles)) { for (ObjectHandle* handle : m_handles) @@ -84,7 +84,7 @@ namespace Nz * \param object HandledObject to move in this */ template - HandledObject& HandledObject::operator=(HandledObject&& object) + HandledObject& HandledObject::operator=(HandledObject&& object) noexcept { UnregisterAllHandles(); @@ -112,7 +112,7 @@ namespace Nz * \brief Unregisters all handles */ template - void HandledObject::UnregisterAllHandles() + void HandledObject::UnregisterAllHandles() noexcept { // Tell every handle we got destroyed, to null them for (ObjectHandle* handle : m_handles) diff --git a/include/Nazara/Core/ObjectHandle.hpp b/include/Nazara/Core/ObjectHandle.hpp index 0527eb491..9dadbc832 100644 --- a/include/Nazara/Core/ObjectHandle.hpp +++ b/include/Nazara/Core/ObjectHandle.hpp @@ -49,8 +49,8 @@ namespace Nz static const ObjectHandle InvalidHandle; protected: - void OnObjectDestroyed(); - void OnObjectMoved(T* newObject); + void OnObjectDestroyed() noexcept; + void OnObjectMoved(T* newObject) noexcept; T* m_object; }; diff --git a/include/Nazara/Core/ObjectHandle.inl b/include/Nazara/Core/ObjectHandle.inl index f4c70ae85..f415f93de 100644 --- a/include/Nazara/Core/ObjectHandle.inl +++ b/include/Nazara/Core/ObjectHandle.inl @@ -268,7 +268,7 @@ namespace Nz * \brief Action to do on object destruction */ template - void ObjectHandle::OnObjectDestroyed() + void ObjectHandle::OnObjectDestroyed() noexcept { // Shortcut m_object = nullptr; @@ -278,7 +278,7 @@ namespace Nz * \brief Action to do on object move */ template - void ObjectHandle::OnObjectMoved(T* newObject) + void ObjectHandle::OnObjectMoved(T* newObject) noexcept { // The object has been moved, update our pointer m_object = newObject; From 97067cb5663a4deeed5fe424a5c7bf1c16352417 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 22 Apr 2018 12:46:41 +0200 Subject: [PATCH 020/194] Sdk/Entity: Fix movement Fixes OnEntityDestruction not being moved --- ChangeLog.md | 1 + SDK/include/NDK/Entity.hpp | 5 +++-- SDK/src/NDK/Entity.cpp | 24 ++---------------------- 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 8a71843c4..11c2003bf 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -140,6 +140,7 @@ Nazara Development Kit: - Add DebugComponent (a component able to show aabb/obb/collision mesh) - ⚠️ TextAreaWidget now support text selection (WIP) - ⚠️ TextAreaWidget::GetHoveredGlyph now returns a two-dimensional position instead of a single glyph position +- Fixed Entity::OnEntityDestruction signal not being properly moved and thus not being called. # 0.4: diff --git a/SDK/include/NDK/Entity.hpp b/SDK/include/NDK/Entity.hpp index 2bf6b6dad..355028fef 100644 --- a/SDK/include/NDK/Entity.hpp +++ b/SDK/include/NDK/Entity.hpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -33,7 +34,7 @@ namespace Ndk public: Entity(const Entity&) = delete; - Entity(Entity&& entity); + Entity(Entity&& entity) noexcept; ~Entity(); BaseComponent& AddComponent(std::unique_ptr&& component); @@ -96,8 +97,8 @@ namespace Ndk Nz::Bitset<> m_componentBits; Nz::Bitset<> m_removedComponentBits; Nz::Bitset<> m_systemBits; + Nz::MovablePtr m_world; EntityId m_id; - World* m_world; bool m_enabled; bool m_valid; }; diff --git a/SDK/src/NDK/Entity.cpp b/SDK/src/NDK/Entity.cpp index 863428d2a..ffcce07f0 100644 --- a/SDK/src/NDK/Entity.cpp +++ b/SDK/src/NDK/Entity.cpp @@ -14,26 +14,8 @@ namespace Ndk * \brief NDK class that represents an entity in a world */ - /*! - * \brief Constructs a Entity object by move semantic - * - * \param entity Entity to move into this - */ - - Entity::Entity(Entity&& entity) : - HandledObject(std::move(entity)), - m_components(std::move(entity.m_components)), - m_containedInLists(std::move(entity.m_containedInLists)), - m_componentBits(std::move(entity.m_componentBits)), - m_removedComponentBits(std::move(entity.m_removedComponentBits)), - m_systemBits(std::move(entity.m_systemBits)), - m_id(entity.m_id), - m_world(entity.m_world), - m_enabled(entity.m_enabled), - m_valid(entity.m_valid) - { - entity.m_world = nullptr; - } + // Must exists in .cpp file because of BaseComponent unique_ptr + Entity::Entity(Entity&&) noexcept = default; /*! * \brief Constructs a Entity object linked to a world and with an id @@ -41,7 +23,6 @@ namespace Ndk * \param world World in which the entity interact * \param id Identifier of the entity */ - Entity::Entity(World* world, EntityId id) : m_id(id), m_world(world) @@ -53,7 +34,6 @@ namespace Ndk * * \see Destroy */ - Entity::~Entity() { if (m_world && m_valid) From 4a6d9dba51024a2d58afd8dcaced6aa2943984a2 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 24 Apr 2018 21:55:55 +0200 Subject: [PATCH 021/194] Sdk/EntityOwner: Fix move assignement operator --- ChangeLog.md | 1 + SDK/include/NDK/EntityOwner.hpp | 2 +- SDK/include/NDK/EntityOwner.inl | 16 ++++++++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 11c2003bf..d85eb5164 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -141,6 +141,7 @@ Nazara Development Kit: - ⚠️ TextAreaWidget now support text selection (WIP) - ⚠️ TextAreaWidget::GetHoveredGlyph now returns a two-dimensional position instead of a single glyph position - Fixed Entity::OnEntityDestruction signal not being properly moved and thus not being called. +- Fixed EntityOwner move assignment which was losing entity ownership # 0.4: diff --git a/SDK/include/NDK/EntityOwner.hpp b/SDK/include/NDK/EntityOwner.hpp index 4dca6010c..fb32f0780 100644 --- a/SDK/include/NDK/EntityOwner.hpp +++ b/SDK/include/NDK/EntityOwner.hpp @@ -25,7 +25,7 @@ namespace Ndk EntityOwner& operator=(Entity* entity); EntityOwner& operator=(const EntityOwner& handle) = delete; - EntityOwner& operator=(EntityOwner&& handle) noexcept = default; + EntityOwner& operator=(EntityOwner&& handle) noexcept; }; } diff --git a/SDK/include/NDK/EntityOwner.inl b/SDK/include/NDK/EntityOwner.inl index a1e28bc2a..566962fb0 100644 --- a/SDK/include/NDK/EntityOwner.inl +++ b/SDK/include/NDK/EntityOwner.inl @@ -31,7 +31,6 @@ namespace Ndk * * \see Reset */ - inline EntityOwner::~EntityOwner() { Reset(nullptr); @@ -68,13 +67,26 @@ namespace Ndk * * \param entity Entity to own */ - inline EntityOwner& EntityOwner::operator=(Entity* entity) { Reset(entity); return *this; } + + /*! + * \brief Steals ownership of a EntityOwner + * + * \param handle Handle to the new entity to own, or an invalid handle + */ + inline EntityOwner& EntityOwner::operator=(EntityOwner&& handle) noexcept + { + Reset(); //< Kill previously owned entity, if any + + EntityHandle::operator=(std::move(handle)); + + return *this; + } } namespace std From aa183559975c8d8291748ed57d525198f7ba04f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 24 Apr 2018 22:08:30 +0200 Subject: [PATCH 022/194] Delete Makefile which has nothing to do here --- build/gmake/Makefile | 365 ------------------------------------------- 1 file changed, 365 deletions(-) delete mode 100644 build/gmake/Makefile diff --git a/build/gmake/Makefile b/build/gmake/Makefile deleted file mode 100644 index 89fb090b6..000000000 --- a/build/gmake/Makefile +++ /dev/null @@ -1,365 +0,0 @@ -# GNU Make workspace makefile autogenerated by Premake - -ifndef config - config=debugdynamic_x64 -endif - -ifndef verbose - SILENT = @ -endif - -ifeq ($(config),debugdynamic_x64) - chipmunk_config = debugdynamic_x64 - lua_config = debugdynamic_x64 - stb_image_config = debugdynamic_x64 - NazaraAudio_config = debugdynamic_x64 - NazaraCore_config = debugdynamic_x64 - NazaraGraphics_config = debugdynamic_x64 - NazaraLua_config = debugdynamic_x64 - NazaraNetwork_config = debugdynamic_x64 - NazaraNoise_config = debugdynamic_x64 - NazaraPhysics2D_config = debugdynamic_x64 - NazaraPhysics3D_config = debugdynamic_x64 - NazaraPlatform_config = debugdynamic_x64 - NazaraRenderer_config = debugdynamic_x64 - NazaraUtility_config = debugdynamic_x64 - PluginAssimp_config = debugdynamic_x64 - NazaraSDK_config = debugdynamic_x64 - NazaraSDKServer_config = debugdynamic_x64 - NazaraUnitTests_config = debugdynamic_x64 - NazaraUnitTestsServer_config = debugdynamic_x64 - DemoDopplerEffect_config = debugdynamic_x64 - DemoFirstScene_config = debugdynamic_x64 - DemoHardwareInfo_config = debugdynamic_x64 - DemoMeshInfos_config = debugdynamic_x64 - DemoParticles_config = debugdynamic_x64 - DemoTut00_EmptyProject_config = debugdynamic_x64 - DemoTut01_HelloWorld_config = debugdynamic_x64 - DemoTut02_Events_config = debugdynamic_x64 -endif -ifeq ($(config),debugdynamic_x86) - chipmunk_config = debugdynamic_x86 - lua_config = debugdynamic_x86 - stb_image_config = debugdynamic_x86 - NazaraAudio_config = debugdynamic_x86 - NazaraCore_config = debugdynamic_x86 - NazaraGraphics_config = debugdynamic_x86 - NazaraLua_config = debugdynamic_x86 - NazaraNetwork_config = debugdynamic_x86 - NazaraNoise_config = debugdynamic_x86 - NazaraPhysics2D_config = debugdynamic_x86 - NazaraPhysics3D_config = debugdynamic_x86 - NazaraPlatform_config = debugdynamic_x86 - NazaraRenderer_config = debugdynamic_x86 - NazaraUtility_config = debugdynamic_x86 - PluginAssimp_config = debugdynamic_x86 - NazaraSDK_config = debugdynamic_x86 - NazaraSDKServer_config = debugdynamic_x86 - NazaraUnitTests_config = debugdynamic_x86 - NazaraUnitTestsServer_config = debugdynamic_x86 - DemoDopplerEffect_config = debugdynamic_x86 - DemoFirstScene_config = debugdynamic_x86 - DemoHardwareInfo_config = debugdynamic_x86 - DemoMeshInfos_config = debugdynamic_x86 - DemoParticles_config = debugdynamic_x86 - DemoTut00_EmptyProject_config = debugdynamic_x86 - DemoTut01_HelloWorld_config = debugdynamic_x86 - DemoTut02_Events_config = debugdynamic_x86 -endif -ifeq ($(config),releasedynamic_x64) - chipmunk_config = releasedynamic_x64 - lua_config = releasedynamic_x64 - stb_image_config = releasedynamic_x64 - NazaraAudio_config = releasedynamic_x64 - NazaraCore_config = releasedynamic_x64 - NazaraGraphics_config = releasedynamic_x64 - NazaraLua_config = releasedynamic_x64 - NazaraNetwork_config = releasedynamic_x64 - NazaraNoise_config = releasedynamic_x64 - NazaraPhysics2D_config = releasedynamic_x64 - NazaraPhysics3D_config = releasedynamic_x64 - NazaraPlatform_config = releasedynamic_x64 - NazaraRenderer_config = releasedynamic_x64 - NazaraUtility_config = releasedynamic_x64 - PluginAssimp_config = releasedynamic_x64 - NazaraSDK_config = releasedynamic_x64 - NazaraSDKServer_config = releasedynamic_x64 - NazaraUnitTests_config = releasedynamic_x64 - NazaraUnitTestsServer_config = releasedynamic_x64 - DemoDopplerEffect_config = releasedynamic_x64 - DemoFirstScene_config = releasedynamic_x64 - DemoHardwareInfo_config = releasedynamic_x64 - DemoMeshInfos_config = releasedynamic_x64 - DemoParticles_config = releasedynamic_x64 - DemoTut00_EmptyProject_config = releasedynamic_x64 - DemoTut01_HelloWorld_config = releasedynamic_x64 - DemoTut02_Events_config = releasedynamic_x64 -endif -ifeq ($(config),releasedynamic_x86) - chipmunk_config = releasedynamic_x86 - lua_config = releasedynamic_x86 - stb_image_config = releasedynamic_x86 - NazaraAudio_config = releasedynamic_x86 - NazaraCore_config = releasedynamic_x86 - NazaraGraphics_config = releasedynamic_x86 - NazaraLua_config = releasedynamic_x86 - NazaraNetwork_config = releasedynamic_x86 - NazaraNoise_config = releasedynamic_x86 - NazaraPhysics2D_config = releasedynamic_x86 - NazaraPhysics3D_config = releasedynamic_x86 - NazaraPlatform_config = releasedynamic_x86 - NazaraRenderer_config = releasedynamic_x86 - NazaraUtility_config = releasedynamic_x86 - PluginAssimp_config = releasedynamic_x86 - NazaraSDK_config = releasedynamic_x86 - NazaraSDKServer_config = releasedynamic_x86 - NazaraUnitTests_config = releasedynamic_x86 - NazaraUnitTestsServer_config = releasedynamic_x86 - DemoDopplerEffect_config = releasedynamic_x86 - DemoFirstScene_config = releasedynamic_x86 - DemoHardwareInfo_config = releasedynamic_x86 - DemoMeshInfos_config = releasedynamic_x86 - DemoParticles_config = releasedynamic_x86 - DemoTut00_EmptyProject_config = releasedynamic_x86 - DemoTut01_HelloWorld_config = releasedynamic_x86 - DemoTut02_Events_config = releasedynamic_x86 -endif - -PROJECTS := chipmunk lua stb_image NazaraAudio NazaraCore NazaraGraphics NazaraLua NazaraNetwork NazaraNoise NazaraPhysics2D NazaraPhysics3D NazaraPlatform NazaraRenderer NazaraUtility PluginAssimp NazaraSDK NazaraSDKServer NazaraUnitTests NazaraUnitTestsServer DemoDopplerEffect DemoFirstScene DemoHardwareInfo DemoMeshInfos DemoParticles DemoTut00_EmptyProject DemoTut01_HelloWorld DemoTut02_Events - -.PHONY: all clean help $(PROJECTS) - -all: $(PROJECTS) - -chipmunk: -ifneq (,$(chipmunk_config)) - @echo "==== Building chipmunk ($(chipmunk_config)) ====" - @${MAKE} --no-print-directory -C thirdparty -f chipmunk.make config=$(chipmunk_config) -endif - -lua: -ifneq (,$(lua_config)) - @echo "==== Building lua ($(lua_config)) ====" - @${MAKE} --no-print-directory -C thirdparty -f lua.make config=$(lua_config) -endif - -stb_image: -ifneq (,$(stb_image_config)) - @echo "==== Building stb_image ($(stb_image_config)) ====" - @${MAKE} --no-print-directory -C thirdparty -f stb_image.make config=$(stb_image_config) -endif - -NazaraAudio: NazaraCore -ifneq (,$(NazaraAudio_config)) - @echo "==== Building NazaraAudio ($(NazaraAudio_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraAudio.make config=$(NazaraAudio_config) -endif - -NazaraCore: -ifneq (,$(NazaraCore_config)) - @echo "==== Building NazaraCore ($(NazaraCore_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraCore.make config=$(NazaraCore_config) -endif - -NazaraGraphics: NazaraCore NazaraUtility NazaraPlatform NazaraRenderer -ifneq (,$(NazaraGraphics_config)) - @echo "==== Building NazaraGraphics ($(NazaraGraphics_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraGraphics.make config=$(NazaraGraphics_config) -endif - -NazaraLua: lua NazaraCore -ifneq (,$(NazaraLua_config)) - @echo "==== Building NazaraLua ($(NazaraLua_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraLua.make config=$(NazaraLua_config) -endif - -NazaraNetwork: NazaraCore -ifneq (,$(NazaraNetwork_config)) - @echo "==== Building NazaraNetwork ($(NazaraNetwork_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraNetwork.make config=$(NazaraNetwork_config) -endif - -NazaraNoise: NazaraCore -ifneq (,$(NazaraNoise_config)) - @echo "==== Building NazaraNoise ($(NazaraNoise_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraNoise.make config=$(NazaraNoise_config) -endif - -NazaraPhysics2D: chipmunk NazaraCore -ifneq (,$(NazaraPhysics2D_config)) - @echo "==== Building NazaraPhysics2D ($(NazaraPhysics2D_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraPhysics2D.make config=$(NazaraPhysics2D_config) -endif - -NazaraPhysics3D: NazaraCore -ifneq (,$(NazaraPhysics3D_config)) - @echo "==== Building NazaraPhysics3D ($(NazaraPhysics3D_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraPhysics3D.make config=$(NazaraPhysics3D_config) -endif - -NazaraPlatform: NazaraCore NazaraUtility -ifneq (,$(NazaraPlatform_config)) - @echo "==== Building NazaraPlatform ($(NazaraPlatform_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraPlatform.make config=$(NazaraPlatform_config) -endif - -NazaraRenderer: NazaraCore NazaraUtility NazaraPlatform -ifneq (,$(NazaraRenderer_config)) - @echo "==== Building NazaraRenderer ($(NazaraRenderer_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraRenderer.make config=$(NazaraRenderer_config) -endif - -NazaraUtility: stb_image NazaraCore -ifneq (,$(NazaraUtility_config)) - @echo "==== Building NazaraUtility ($(NazaraUtility_config)) ====" - @${MAKE} --no-print-directory -C modules -f NazaraUtility.make config=$(NazaraUtility_config) -endif - -PluginAssimp: NazaraCore NazaraUtility -ifneq (,$(PluginAssimp_config)) - @echo "==== Building PluginAssimp ($(PluginAssimp_config)) ====" - @${MAKE} --no-print-directory -C tools -f PluginAssimp.make config=$(PluginAssimp_config) -endif - -NazaraSDK: NazaraAudio NazaraCore NazaraGraphics NazaraLua NazaraNetwork NazaraNoise NazaraPhysics2D NazaraPhysics3D NazaraPlatform NazaraRenderer NazaraUtility -ifneq (,$(NazaraSDK_config)) - @echo "==== Building NazaraSDK ($(NazaraSDK_config)) ====" - @${MAKE} --no-print-directory -C tools -f NazaraSDK.make config=$(NazaraSDK_config) -endif - -NazaraSDKServer: NazaraCore NazaraLua NazaraNetwork NazaraNoise NazaraPhysics2D NazaraPhysics3D NazaraUtility -ifneq (,$(NazaraSDKServer_config)) - @echo "==== Building NazaraSDKServer ($(NazaraSDKServer_config)) ====" - @${MAKE} --no-print-directory -C tools -f NazaraSDKServer.make config=$(NazaraSDKServer_config) -endif - -NazaraUnitTests: NazaraSDK NazaraAudio NazaraCore NazaraGraphics NazaraLua NazaraNetwork NazaraNoise NazaraPhysics2D NazaraPhysics3D NazaraPlatform NazaraRenderer NazaraUtility -ifneq (,$(NazaraUnitTests_config)) - @echo "==== Building NazaraUnitTests ($(NazaraUnitTests_config)) ====" - @${MAKE} --no-print-directory -C tools -f NazaraUnitTests.make config=$(NazaraUnitTests_config) -endif - -NazaraUnitTestsServer: NazaraSDKServer NazaraCore NazaraLua NazaraNetwork NazaraNoise NazaraPhysics2D NazaraPhysics3D NazaraUtility -ifneq (,$(NazaraUnitTestsServer_config)) - @echo "==== Building NazaraUnitTestsServer ($(NazaraUnitTestsServer_config)) ====" - @${MAKE} --no-print-directory -C tools -f NazaraUnitTestsServer.make config=$(NazaraUnitTestsServer_config) -endif - -DemoDopplerEffect: NazaraAudio NazaraCore NazaraPlatform NazaraUtility -ifneq (,$(DemoDopplerEffect_config)) - @echo "==== Building DemoDopplerEffect ($(DemoDopplerEffect_config)) ====" - @${MAKE} --no-print-directory -C examples -f DemoDopplerEffect.make config=$(DemoDopplerEffect_config) -endif - -DemoFirstScene: NazaraAudio NazaraCore NazaraGraphics NazaraLua NazaraNetwork NazaraNoise NazaraPhysics2D NazaraPhysics3D NazaraPlatform NazaraRenderer NazaraUtility NazaraSDK -ifneq (,$(DemoFirstScene_config)) - @echo "==== Building DemoFirstScene ($(DemoFirstScene_config)) ====" - @${MAKE} --no-print-directory -C examples -f DemoFirstScene.make config=$(DemoFirstScene_config) -endif - -DemoHardwareInfo: NazaraCore NazaraPlatform NazaraRenderer NazaraUtility -ifneq (,$(DemoHardwareInfo_config)) - @echo "==== Building DemoHardwareInfo ($(DemoHardwareInfo_config)) ====" - @${MAKE} --no-print-directory -C examples -f DemoHardwareInfo.make config=$(DemoHardwareInfo_config) -endif - -DemoMeshInfos: NazaraCore NazaraPlatform NazaraUtility -ifneq (,$(DemoMeshInfos_config)) - @echo "==== Building DemoMeshInfos ($(DemoMeshInfos_config)) ====" - @${MAKE} --no-print-directory -C examples -f DemoMeshInfos.make config=$(DemoMeshInfos_config) -endif - -DemoParticles: NazaraAudio NazaraCore NazaraGraphics NazaraLua NazaraNetwork NazaraNoise NazaraPhysics2D NazaraPhysics3D NazaraPlatform NazaraRenderer NazaraUtility NazaraSDK -ifneq (,$(DemoParticles_config)) - @echo "==== Building DemoParticles ($(DemoParticles_config)) ====" - @${MAKE} --no-print-directory -C examples -f DemoParticles.make config=$(DemoParticles_config) -endif - -DemoTut00_EmptyProject: NazaraAudio NazaraCore NazaraGraphics NazaraLua NazaraNetwork NazaraNoise NazaraPhysics2D NazaraPhysics3D NazaraPlatform NazaraRenderer NazaraUtility NazaraSDK -ifneq (,$(DemoTut00_EmptyProject_config)) - @echo "==== Building DemoTut00_EmptyProject ($(DemoTut00_EmptyProject_config)) ====" - @${MAKE} --no-print-directory -C examples -f DemoTut00_EmptyProject.make config=$(DemoTut00_EmptyProject_config) -endif - -DemoTut01_HelloWorld: NazaraAudio NazaraCore NazaraGraphics NazaraLua NazaraNetwork NazaraNoise NazaraPhysics2D NazaraPhysics3D NazaraPlatform NazaraRenderer NazaraUtility NazaraSDK -ifneq (,$(DemoTut01_HelloWorld_config)) - @echo "==== Building DemoTut01_HelloWorld ($(DemoTut01_HelloWorld_config)) ====" - @${MAKE} --no-print-directory -C examples -f DemoTut01_HelloWorld.make config=$(DemoTut01_HelloWorld_config) -endif - -DemoTut02_Events: NazaraAudio NazaraCore NazaraGraphics NazaraLua NazaraNetwork NazaraNoise NazaraPhysics2D NazaraPhysics3D NazaraPlatform NazaraRenderer NazaraUtility NazaraSDK -ifneq (,$(DemoTut02_Events_config)) - @echo "==== Building DemoTut02_Events ($(DemoTut02_Events_config)) ====" - @${MAKE} --no-print-directory -C examples -f DemoTut02_Events.make config=$(DemoTut02_Events_config) -endif - -clean: - @${MAKE} --no-print-directory -C thirdparty -f chipmunk.make clean - @${MAKE} --no-print-directory -C thirdparty -f lua.make clean - @${MAKE} --no-print-directory -C thirdparty -f stb_image.make clean - @${MAKE} --no-print-directory -C modules -f NazaraAudio.make clean - @${MAKE} --no-print-directory -C modules -f NazaraCore.make clean - @${MAKE} --no-print-directory -C modules -f NazaraGraphics.make clean - @${MAKE} --no-print-directory -C modules -f NazaraLua.make clean - @${MAKE} --no-print-directory -C modules -f NazaraNetwork.make clean - @${MAKE} --no-print-directory -C modules -f NazaraNoise.make clean - @${MAKE} --no-print-directory -C modules -f NazaraPhysics2D.make clean - @${MAKE} --no-print-directory -C modules -f NazaraPhysics3D.make clean - @${MAKE} --no-print-directory -C modules -f NazaraPlatform.make clean - @${MAKE} --no-print-directory -C modules -f NazaraRenderer.make clean - @${MAKE} --no-print-directory -C modules -f NazaraUtility.make clean - @${MAKE} --no-print-directory -C tools -f PluginAssimp.make clean - @${MAKE} --no-print-directory -C tools -f NazaraSDK.make clean - @${MAKE} --no-print-directory -C tools -f NazaraSDKServer.make clean - @${MAKE} --no-print-directory -C tools -f NazaraUnitTests.make clean - @${MAKE} --no-print-directory -C tools -f NazaraUnitTestsServer.make clean - @${MAKE} --no-print-directory -C examples -f DemoDopplerEffect.make clean - @${MAKE} --no-print-directory -C examples -f DemoFirstScene.make clean - @${MAKE} --no-print-directory -C examples -f DemoHardwareInfo.make clean - @${MAKE} --no-print-directory -C examples -f DemoMeshInfos.make clean - @${MAKE} --no-print-directory -C examples -f DemoParticles.make clean - @${MAKE} --no-print-directory -C examples -f DemoTut00_EmptyProject.make clean - @${MAKE} --no-print-directory -C examples -f DemoTut01_HelloWorld.make clean - @${MAKE} --no-print-directory -C examples -f DemoTut02_Events.make clean - -help: - @echo "Usage: make [config=name] [target]" - @echo "" - @echo "CONFIGURATIONS:" - @echo " debugdynamic_x64" - @echo " debugdynamic_x86" - @echo " releasedynamic_x64" - @echo " releasedynamic_x86" - @echo "" - @echo "TARGETS:" - @echo " all (default)" - @echo " clean" - @echo " chipmunk" - @echo " lua" - @echo " stb_image" - @echo " NazaraAudio" - @echo " NazaraCore" - @echo " NazaraGraphics" - @echo " NazaraLua" - @echo " NazaraNetwork" - @echo " NazaraNoise" - @echo " NazaraPhysics2D" - @echo " NazaraPhysics3D" - @echo " NazaraPlatform" - @echo " NazaraRenderer" - @echo " NazaraUtility" - @echo " PluginAssimp" - @echo " NazaraSDK" - @echo " NazaraSDKServer" - @echo " NazaraUnitTests" - @echo " NazaraUnitTestsServer" - @echo " DemoDopplerEffect" - @echo " DemoFirstScene" - @echo " DemoHardwareInfo" - @echo " DemoMeshInfos" - @echo " DemoParticles" - @echo " DemoTut00_EmptyProject" - @echo " DemoTut01_HelloWorld" - @echo " DemoTut02_Events" - @echo "" - @echo "For more information, see http://industriousone.com/premake/quick-start" \ No newline at end of file From 8695e11436087339441e86333d2e4cfa2fb2afc1 Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 26 Apr 2018 22:45:24 +0200 Subject: [PATCH 023/194] Fix whitespace --- src/Nazara/Graphics/DeferredGeometryPass.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Nazara/Graphics/DeferredGeometryPass.cpp b/src/Nazara/Graphics/DeferredGeometryPass.cpp index dcea7d305..dbd500ea4 100644 --- a/src/Nazara/Graphics/DeferredGeometryPass.cpp +++ b/src/Nazara/Graphics/DeferredGeometryPass.cpp @@ -649,15 +649,15 @@ namespace Nz mapper.Unmap(); // No point to keep the buffer open any longer - // Quad buffer (used for instancing of billboards and sprites) - //Note: UV are computed in the shader + // Quad buffer (used for instancing of billboards and sprites) + //Note: UV are computed in the shader s_quadVertexBuffer.Reset(VertexDeclaration::Get(VertexLayout_XY), 4, DataStorage_Hardware, 0); float vertices[2 * 4] = { -0.5f, -0.5f, - 0.5f, -0.5f, + 0.5f, -0.5f, -0.5f, 0.5f, - 0.5f, 0.5f, + 0.5f, 0.5f, }; s_quadVertexBuffer.FillRaw(vertices, 0, sizeof(vertices)); From 1c608596e15f1ec42cb14ecc016248c08c4c6a4d Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 26 Apr 2018 22:49:14 +0200 Subject: [PATCH 024/194] Oops again --- include/Nazara/Graphics/Enums.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/Nazara/Graphics/Enums.hpp b/include/Nazara/Graphics/Enums.hpp index 83f46dc22..9a2f970de 100644 --- a/include/Nazara/Graphics/Enums.hpp +++ b/include/Nazara/Graphics/Enums.hpp @@ -104,6 +104,7 @@ namespace Nz RenderPassType_Fog, RenderPassType_Forward, RenderPassType_Lighting, + RenderPassType_LightScattering, RenderPassType_Geometry, RenderPassType_SSAO, From 8b1efa974f8daafec95d30311fe87152307ba18f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 27 Apr 2018 11:31:04 +0200 Subject: [PATCH 025/194] Revert "Oops again" This reverts commit 1c608596e15f1ec42cb14ecc016248c08c4c6a4d. --- include/Nazara/Graphics/Enums.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/include/Nazara/Graphics/Enums.hpp b/include/Nazara/Graphics/Enums.hpp index 9a2f970de..83f46dc22 100644 --- a/include/Nazara/Graphics/Enums.hpp +++ b/include/Nazara/Graphics/Enums.hpp @@ -104,7 +104,6 @@ namespace Nz RenderPassType_Fog, RenderPassType_Forward, RenderPassType_Lighting, - RenderPassType_LightScattering, RenderPassType_Geometry, RenderPassType_SSAO, From 232a371fa5889e5354a3795c3981cb22758e77e0 Mon Sep 17 00:00:00 2001 From: HardCPP Date: Mon, 30 Apr 2018 14:49:44 +0200 Subject: [PATCH 026/194] Add normalLength parameter to the DebugDrawer::DrawNormals (#163) --- include/Nazara/Renderer/DebugDrawer.hpp | 2 +- src/Nazara/Renderer/DebugDrawer.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/Nazara/Renderer/DebugDrawer.hpp b/include/Nazara/Renderer/DebugDrawer.hpp index a001b1bab..e6667e7a9 100644 --- a/include/Nazara/Renderer/DebugDrawer.hpp +++ b/include/Nazara/Renderer/DebugDrawer.hpp @@ -36,7 +36,7 @@ namespace Nz static void DrawCone(const Vector3f& origin, const Quaternionf& rotation, float angle, float length); static void DrawLine(const Vector3f& p1, const Vector3f& p2); static void DrawPoints(const Vector3f* ptr, unsigned int pointCount); - static void DrawNormals(const StaticMesh* subMesh); + static void DrawNormals(const StaticMesh* subMesh, float normalLength = 0.01f); static void DrawTangents(const StaticMesh* subMesh); static void EnableDepthBuffer(bool depthBuffer); diff --git a/src/Nazara/Renderer/DebugDrawer.cpp b/src/Nazara/Renderer/DebugDrawer.cpp index ef6136b31..08dba0d32 100644 --- a/src/Nazara/Renderer/DebugDrawer.cpp +++ b/src/Nazara/Renderer/DebugDrawer.cpp @@ -556,7 +556,7 @@ namespace Nz } } - void DebugDrawer::DrawNormals(const StaticMesh* subMesh) + void DebugDrawer::DrawNormals(const StaticMesh* subMesh, float normalLength) { if (!s_initialized && !Initialize()) { @@ -583,7 +583,7 @@ namespace Nz outputVertex->position = inputVertex->position; outputVertex++; - outputVertex->position = inputVertex->position + inputVertex->normal*0.01f; + outputVertex->position = inputVertex->position + inputVertex->normal*normalLength; outputVertex++; inputVertex++; From 24ec816762d0c19269c691be59ada8a52214e9fe Mon Sep 17 00:00:00 2001 From: S6066 Date: Mon, 30 Apr 2018 14:51:11 +0200 Subject: [PATCH 027/194] Make LuaImplQueryArg impl for std::vector (#162) --- include/Nazara/Lua/LuaState.inl | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/include/Nazara/Lua/LuaState.inl b/include/Nazara/Lua/LuaState.inl index 62669d72b..be1cf5cad 100644 --- a/include/Nazara/Lua/LuaState.inl +++ b/include/Nazara/Lua/LuaState.inl @@ -159,6 +159,36 @@ namespace Nz return LuaImplQueryArg(instance, index, arg, defValue, TypeTag()); } + template + unsigned int LuaImplQueryArg(const LuaState& instance, int index, std::vector* container, TypeTag>) + { + instance.CheckType(index, Nz::LuaType_Table); + std::size_t index = 1; + + for (;;) + { + instance.PushInteger(index++); + + if (instance.GetTable() == Nz::LuaType_Nil) + { + instance.Pop(); + break; + } + + T arg {}; + + if (LuaImplQueryArg(instance, -1, &arg, TypeTag()) != 1) + { + instance.Error("Type needs more than one place to be initialized"); + return 0; + } + + container->push_back(arg); + } + + return 1; + } + // Function returns inline int LuaImplReplyVal(const LuaState& instance, bool val, TypeTag) { From 95f137816a6c8e7352f57352063d5ed33b679583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Mon, 30 Apr 2018 14:55:28 +0200 Subject: [PATCH 028/194] Physics2D/PhysWorld2D: Add invStepCount argument to pre/post steps callbacks --- ChangeLog.md | 1 + include/Nazara/Physics2D/PhysWorld2D.hpp | 4 ++-- src/Nazara/Physics2D/PhysWorld2D.cpp | 10 +++++----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index d85eb5164..cb5e4d833 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -94,6 +94,7 @@ Nazara Engine: - ⚠️ Stream::ReadLine will now returns empty lines if present in the file - Fixed cubemaps seams with OpenGL - HandledObject movement constructor/assignement operator are now marked noexcept +- ⚠️ PhysWorld2D callbacks OnPhysWorld2DPreStep and OnPhysWorld2DPostStep now takes a invStepCount depending on the number of step taken this update, fixing force application and other Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Physics2D/PhysWorld2D.hpp b/include/Nazara/Physics2D/PhysWorld2D.hpp index e2ec3b042..301e73563 100644 --- a/include/Nazara/Physics2D/PhysWorld2D.hpp +++ b/include/Nazara/Physics2D/PhysWorld2D.hpp @@ -123,8 +123,8 @@ namespace Nz float fraction; }; - NazaraSignal(OnPhysWorld2DPreStep, const PhysWorld2D* /*physWorld*/); - NazaraSignal(OnPhysWorld2DPostStep, const PhysWorld2D* /*physWorld*/); + NazaraSignal(OnPhysWorld2DPreStep, const PhysWorld2D* /*physWorld*/, float /*invStepCount*/); + NazaraSignal(OnPhysWorld2DPostStep, const PhysWorld2D* /*physWorld*/, float /*invStepCount*/); private: void InitCallbacks(cpCollisionHandler* handler, const Callback& callbacks); diff --git a/src/Nazara/Physics2D/PhysWorld2D.cpp b/src/Nazara/Physics2D/PhysWorld2D.cpp index 807c0e7cc..ea648b197 100644 --- a/src/Nazara/Physics2D/PhysWorld2D.cpp +++ b/src/Nazara/Physics2D/PhysWorld2D.cpp @@ -311,14 +311,15 @@ namespace Nz { m_timestepAccumulator += timestep; - std::size_t stepCount = 0; - while (m_timestepAccumulator >= m_stepSize && stepCount < m_maxStepCount) + std::size_t stepCount = std::min(static_cast(m_timestepAccumulator / m_stepSize), m_maxStepCount); + float invStepCount = 1.f / stepCount; + for (std::size_t i = 0; i < stepCount; ++i) { - OnPhysWorld2DPreStep(this); + OnPhysWorld2DPreStep(this, invStepCount); cpSpaceStep(m_handle, m_stepSize); - OnPhysWorld2DPostStep(this); + OnPhysWorld2DPostStep(this, invStepCount); if (!m_rigidPostSteps.empty()) { for (const auto& pair : m_rigidPostSteps) @@ -331,7 +332,6 @@ namespace Nz } m_timestepAccumulator -= m_stepSize; - stepCount++; } } From 03e976993f7303a304212f8fc862a17811ba6658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Mon, 30 Apr 2018 15:00:45 +0200 Subject: [PATCH 029/194] Revert "Make LuaImplQueryArg impl for std::vector (#162)" This reverts commit 24ec816762d0c19269c691be59ada8a52214e9fe. --- include/Nazara/Lua/LuaState.inl | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/include/Nazara/Lua/LuaState.inl b/include/Nazara/Lua/LuaState.inl index be1cf5cad..62669d72b 100644 --- a/include/Nazara/Lua/LuaState.inl +++ b/include/Nazara/Lua/LuaState.inl @@ -159,36 +159,6 @@ namespace Nz return LuaImplQueryArg(instance, index, arg, defValue, TypeTag()); } - template - unsigned int LuaImplQueryArg(const LuaState& instance, int index, std::vector* container, TypeTag>) - { - instance.CheckType(index, Nz::LuaType_Table); - std::size_t index = 1; - - for (;;) - { - instance.PushInteger(index++); - - if (instance.GetTable() == Nz::LuaType_Nil) - { - instance.Pop(); - break; - } - - T arg {}; - - if (LuaImplQueryArg(instance, -1, &arg, TypeTag()) != 1) - { - instance.Error("Type needs more than one place to be initialized"); - return 0; - } - - container->push_back(arg); - } - - return 1; - } - // Function returns inline int LuaImplReplyVal(const LuaState& instance, bool val, TypeTag) { From d94baf133bebee04c5a65777457be9ae38163c0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 3 May 2018 13:32:17 +0200 Subject: [PATCH 030/194] Utility/Mesh: Refactor Mesh & Submeshes --- ChangeLog.md | 3 + SDK/src/NDK/Systems/DebugSystem.cpp | 4 +- include/Nazara/Utility/Mesh.hpp | 33 +- include/Nazara/Utility/Mesh.inl | 14 + include/Nazara/Utility/SkeletalMesh.hpp | 9 +- include/Nazara/Utility/StaticMesh.hpp | 9 +- include/Nazara/Utility/SubMesh.hpp | 12 +- plugins/Assimp/Plugin.cpp | 5 +- src/Nazara/Utility/Formats/MD2Loader.cpp | 7 +- src/Nazara/Utility/Formats/MD5MeshLoader.cpp | 17 +- src/Nazara/Utility/Formats/OBJLoader.cpp | 14 +- src/Nazara/Utility/Mesh.cpp | 300 +++++++++---------- src/Nazara/Utility/SkeletalMesh.cpp | 14 +- src/Nazara/Utility/StaticMesh.cpp | 18 +- src/Nazara/Utility/SubMesh.cpp | 15 +- 15 files changed, 250 insertions(+), 224 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index cb5e4d833..7242fbaf4 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -95,6 +95,9 @@ Nazara Engine: - Fixed cubemaps seams with OpenGL - HandledObject movement constructor/assignement operator are now marked noexcept - ⚠️ PhysWorld2D callbacks OnPhysWorld2DPreStep and OnPhysWorld2DPostStep now takes a invStepCount depending on the number of step taken this update, fixing force application and other +- ⚠️ Refactored Mesh/SubMesh, allowing a submesh to be attached to multiple meshes, deprecating Create/Destroy methods +- SubMesh class now has a OnSubMeshInvalidateAABB signal, triggered when a new AABB is set to the submesh +- Mesh class now has a OnMeshInvalidateAABB signal, triggered when a mesh invalidates its AABB, which is also submesh updates its AABB Nazara Development Kit: - Added ImageWidget (#139) diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index d7ce4bb3d..1b5634eaf 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -300,9 +300,7 @@ namespace Ndk Nz::MeshRef mesh = Nz::Mesh::New(); mesh->CreateStatic(); - Nz::StaticMeshRef subMesh = Nz::StaticMesh::New(mesh); - subMesh->Create(vertexBuffer); - subMesh->SetIndexBuffer(indexBuffer); + Nz::StaticMeshRef subMesh = Nz::StaticMesh::New(vertexBuffer, indexBuffer); subMesh->SetPrimitiveMode(Nz::PrimitiveMode_LineList); subMesh->SetMaterialIndex(0); subMesh->GenerateAABB(); diff --git a/include/Nazara/Utility/Mesh.hpp b/include/Nazara/Utility/Mesh.hpp index 0848ee2fb..0ecd9eb3a 100644 --- a/include/Nazara/Utility/Mesh.hpp +++ b/include/Nazara/Utility/Mesh.hpp @@ -20,8 +20,12 @@ #include #include #include +#include +#include #include #include +#include +#include namespace Nz { @@ -56,7 +60,6 @@ namespace Nz class Mesh; struct Primitive; class PrimitiveList; - class Skeleton; class SubMesh; using MeshVertex = VertexStruct_XYZ_Normal_UV_Tangent; @@ -80,8 +83,10 @@ namespace Nz friend class Utility; public: - Mesh() = default; - ~Mesh(); + inline Mesh(); + Mesh(const Mesh&) = delete; + Mesh(Mesh&&) = delete; + inline ~Mesh(); void AddSubMesh(SubMesh* subMesh); void AddSubMesh(const String& identifier, SubMesh* subMesh); @@ -141,14 +146,34 @@ namespace Nz void Transform(const Matrix4f& matrix); + Mesh& operator=(const Mesh&) = delete; + Mesh& operator=(Mesh&&) = delete; + template static MeshRef New(Args&&... args); // Signals: NazaraSignal(OnMeshDestroy, const Mesh* /*mesh*/); + NazaraSignal(OnMeshInvalidateAABB, const Mesh* /*mesh*/); NazaraSignal(OnMeshRelease, const Mesh* /*mesh*/); private: - MeshImpl* m_impl = nullptr; + struct SubMeshData + { + SubMeshRef subMesh; + + NazaraSlot(SubMesh, OnSubMeshInvalidateAABB, onSubMeshInvalidated); + }; + + std::unordered_map m_subMeshMap; + std::vector m_materialData; + std::vector m_subMeshes; + AnimationType m_animationType; + mutable Boxf m_aabb; + Skeleton m_skeleton; // Only used by skeletal meshes + String m_animationPath; + mutable bool m_aabbUpdated; + bool m_isValid; + UInt32 m_jointCount; // Only used by skeletal meshes static bool Initialize(); static void Uninitialize(); diff --git a/include/Nazara/Utility/Mesh.inl b/include/Nazara/Utility/Mesh.inl index e63cb389f..5dbe349d0 100644 --- a/include/Nazara/Utility/Mesh.inl +++ b/include/Nazara/Utility/Mesh.inl @@ -2,11 +2,25 @@ // This file is part of the "Nazara Engine - Utility module" // For conditions of distribution and use, see copyright notice in Config.hpp +#include #include #include namespace Nz { + Mesh::Mesh() : + m_materialData(1), + m_aabbUpdated(false) + { + } + + Mesh::~Mesh() + { + OnMeshRelease(this); + + Destroy(); + } + template MeshRef Mesh::New(Args&&... args) { diff --git a/include/Nazara/Utility/SkeletalMesh.hpp b/include/Nazara/Utility/SkeletalMesh.hpp index d1f652e85..ebba1cfb5 100644 --- a/include/Nazara/Utility/SkeletalMesh.hpp +++ b/include/Nazara/Utility/SkeletalMesh.hpp @@ -24,9 +24,14 @@ namespace Nz class NAZARA_UTILITY_API SkeletalMesh final : public SubMesh { public: + SkeletalMesh(VertexBuffer* vertexBuffer, const IndexBuffer* indexBuffer); + + NAZARA_DEPRECATED("SkeletalMesh constructor taking a mesh is deprecated, submeshes no longer require to be part of a single mesh") SkeletalMesh(const Mesh* parent); + ~SkeletalMesh(); + NAZARA_DEPRECATED("SkeletalMesh create/destroy functions are deprecated, please use constructor") bool Create(VertexBuffer* vertexBuffer); void Destroy(); @@ -51,8 +56,8 @@ namespace Nz private: Boxf m_aabb; - IndexBufferConstRef m_indexBuffer = nullptr; - VertexBufferRef m_vertexBuffer = nullptr; + IndexBufferConstRef m_indexBuffer; + VertexBufferRef m_vertexBuffer; }; } diff --git a/include/Nazara/Utility/StaticMesh.hpp b/include/Nazara/Utility/StaticMesh.hpp index 395713835..534157fb6 100644 --- a/include/Nazara/Utility/StaticMesh.hpp +++ b/include/Nazara/Utility/StaticMesh.hpp @@ -21,11 +21,16 @@ namespace Nz class NAZARA_UTILITY_API StaticMesh final : public SubMesh { public: + StaticMesh(VertexBuffer* vertexBuffer, const IndexBuffer* indexBuffer); + + NAZARA_DEPRECATED("StaticMesh constructor taking a mesh is deprecated, submeshes no longer require to be part of a single mesh") StaticMesh(const Mesh* parent); + ~StaticMesh(); void Center(); + NAZARA_DEPRECATED("StaticMesh create/destroy functions are deprecated, please use constructor") bool Create(VertexBuffer* vertexBuffer); void Destroy(); @@ -52,8 +57,8 @@ namespace Nz private: Boxf m_aabb; - IndexBufferConstRef m_indexBuffer = nullptr; - VertexBufferRef m_vertexBuffer = nullptr; + IndexBufferConstRef m_indexBuffer; + VertexBufferRef m_vertexBuffer; }; } diff --git a/include/Nazara/Utility/SubMesh.hpp b/include/Nazara/Utility/SubMesh.hpp index 54c948f89..cfbde074c 100644 --- a/include/Nazara/Utility/SubMesh.hpp +++ b/include/Nazara/Utility/SubMesh.hpp @@ -28,7 +28,13 @@ namespace Nz friend Mesh; public: + SubMesh(); + + NAZARA_DEPRECATED("Submesh constructor taking a mesh is deprecated, submeshes no longer require to be part of a single mesh") SubMesh(const Mesh* parent); + + SubMesh(const SubMesh&) = delete; + SubMesh(SubMesh&&) = delete; virtual ~SubMesh(); void GenerateNormals(); @@ -39,7 +45,6 @@ namespace Nz virtual AnimationType GetAnimationType() const = 0; virtual const IndexBuffer* GetIndexBuffer() const = 0; UInt32 GetMaterialIndex() const; - const Mesh* GetParent() const; PrimitiveMode GetPrimitiveMode() const; UInt32 GetTriangleCount() const; virtual UInt32 GetVertexCount() const = 0; @@ -49,12 +54,15 @@ namespace Nz void SetMaterialIndex(UInt32 matIndex); void SetPrimitiveMode(PrimitiveMode mode); + SubMesh& operator=(const SubMesh&) = delete; + SubMesh& operator=(SubMesh&&) = delete; + // Signals: + NazaraSignal(OnSubMeshInvalidateAABB, const SubMesh* /*subMesh*/); NazaraSignal(OnSubMeshRelease, const SubMesh* /*subMesh*/); protected: PrimitiveMode m_primitiveMode; - const Mesh* m_parent; UInt32 m_matIndex; }; } diff --git a/plugins/Assimp/Plugin.cpp b/plugins/Assimp/Plugin.cpp index 0dcd5fbcb..4320ae098 100644 --- a/plugins/Assimp/Plugin.cpp +++ b/plugins/Assimp/Plugin.cpp @@ -279,10 +279,7 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) vertexMapper.Unmap(); // Submesh - StaticMeshRef subMesh = StaticMesh::New(mesh); - subMesh->Create(vertexBuffer); - - subMesh->SetIndexBuffer(indexBuffer); + StaticMeshRef subMesh = StaticMesh::New(vertexBuffer, indexBuffer); subMesh->GenerateAABB(); subMesh->SetMaterialIndex(iMesh->mMaterialIndex); diff --git a/src/Nazara/Utility/Formats/MD2Loader.cpp b/src/Nazara/Utility/Formats/MD2Loader.cpp index 6758a2e1b..ac7d6e5d7 100644 --- a/src/Nazara/Utility/Formats/MD2Loader.cpp +++ b/src/Nazara/Utility/Formats/MD2Loader.cpp @@ -158,12 +158,7 @@ namespace Nz #endif VertexBufferRef vertexBuffer = VertexBuffer::New(parameters.vertexDeclaration, header.num_vertices, parameters.storage, parameters.vertexBufferFlags); - StaticMeshRef subMesh = StaticMesh::New(mesh); - if (!subMesh->Create(vertexBuffer)) - { - NazaraError("Failed to create SubMesh"); - return false; - } + StaticMeshRef subMesh = StaticMesh::New(vertexBuffer, indexBuffer); // Extracting vertices stream.SetCursorPos(header.offset_frames); diff --git a/src/Nazara/Utility/Formats/MD5MeshLoader.cpp b/src/Nazara/Utility/Formats/MD5MeshLoader.cpp index d7104b9d0..84197e1c9 100644 --- a/src/Nazara/Utility/Formats/MD5MeshLoader.cpp +++ b/src/Nazara/Utility/Formats/MD5MeshLoader.cpp @@ -202,13 +202,9 @@ namespace Nz mesh->SetMaterialData(i, std::move(matData)); // Submesh - SkeletalMeshRef subMesh = SkeletalMesh::New(mesh); - subMesh->Create(vertexBuffer); - - subMesh->SetIndexBuffer(indexBuffer); + SkeletalMeshRef subMesh = SkeletalMesh::New(vertexBuffer, indexBuffer); subMesh->GenerateNormalsAndTangents(); subMesh->SetMaterialIndex(i); - subMesh->SetPrimitiveMode(PrimitiveMode_TriangleList); mesh->AddSubMesh(subMesh); @@ -255,6 +251,9 @@ namespace Nz } indexMapper.Unmap(); + if (parameters.optimizeIndexBuffers) + indexBuffer->Optimize(); + // Vertex buffer VertexBufferRef vertexBuffer = VertexBuffer::New(parameters.vertexDeclaration, UInt32(vertexCount), parameters.storage, parameters.vertexBufferFlags); @@ -287,13 +286,7 @@ namespace Nz vertexMapper.Unmap(); // Submesh - StaticMeshRef subMesh = StaticMesh::New(mesh); - subMesh->Create(vertexBuffer); - - if (parameters.optimizeIndexBuffers) - indexBuffer->Optimize(); - - subMesh->SetIndexBuffer(indexBuffer); + StaticMeshRef subMesh = StaticMesh::New(vertexBuffer, indexBuffer); subMesh->GenerateAABB(); subMesh->SetMaterialIndex(i); diff --git a/src/Nazara/Utility/Formats/OBJLoader.cpp b/src/Nazara/Utility/Formats/OBJLoader.cpp index 43e938bf4..ba8f90f73 100644 --- a/src/Nazara/Utility/Formats/OBJLoader.cpp +++ b/src/Nazara/Utility/Formats/OBJLoader.cpp @@ -311,20 +311,10 @@ namespace Nz vertexMapper.Unmap(); - StaticMeshRef subMesh = StaticMesh::New(mesh); - if (!subMesh->Create(vertexBuffer)) - { - NazaraError("Failed to create StaticMesh"); - continue; - } - - if (parameters.optimizeIndexBuffers) - indexBuffer->Optimize(); - + StaticMeshRef subMesh = StaticMesh::New(vertexBuffer, indexBuffer); subMesh->GenerateAABB(); - subMesh->SetIndexBuffer(indexBuffer); + subMesh->SetAABB(subMesh->GetAABB() * 0.5f); subMesh->SetMaterialIndex(meshes[i].material); - subMesh->SetPrimitiveMode(PrimitiveMode_TriangleList); // Ce que nous pouvons générer dépend des données à disposition (par exemple les tangentes nécessitent des coordonnées de texture) if (hasNormals && hasTexCoords) diff --git a/src/Nazara/Utility/Mesh.cpp b/src/Nazara/Utility/Mesh.cpp index 66ee817ff..015ee520d 100644 --- a/src/Nazara/Utility/Mesh.cpp +++ b/src/Nazara/Utility/Mesh.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2017 Jérôme Leclercq +// Copyright (C) 2017 Jérôme Leclercq // This file is part of the "Nazara Engine - Utility module" // For conditions of distribution and use, see copyright notice in Config.hpp @@ -56,62 +56,40 @@ namespace Nz return true; } - struct MeshImpl - { - MeshImpl() - { - materialData.resize(1); // One material by default - } - - std::unordered_map subMeshMap; - std::vector materialData; - std::vector subMeshes; - AnimationType animationType; - Boxf aabb; - Skeleton skeleton; // Only used by skeletal meshes - String animationPath; - bool aabbUpdated = false; - UInt32 jointCount; // Only used by skeletal meshes - }; - - Mesh::~Mesh() - { - OnMeshRelease(this); - - Destroy(); - } void Mesh::AddSubMesh(SubMesh* subMesh) { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); NazaraAssert(subMesh, "Invalid submesh"); - NazaraAssert(subMesh->GetAnimationType() == m_impl->animationType, "Submesh animation type doesn't match mesh animation type"); + NazaraAssert(subMesh->GetAnimationType() == m_animationType, "Submesh animation type doesn't match mesh animation type"); - m_impl->subMeshes.emplace_back(subMesh); + m_subMeshes.emplace_back(); + SubMeshData& subMeshData = m_subMeshes.back(); + subMeshData.subMesh = subMesh; + subMeshData.onSubMeshInvalidated.Connect(subMesh->OnSubMeshInvalidateAABB, [this](const SubMesh* /*subMesh*/) { InvalidateAABB(); }); InvalidateAABB(); } void Mesh::AddSubMesh(const String& identifier, SubMesh* subMesh) { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); NazaraAssert(!identifier.IsEmpty(), "Identifier is empty"); - NazaraAssert(m_impl->subMeshMap.find(identifier) == m_impl->subMeshMap.end(), "SubMesh identifier \"" + identifier + "\" is already in use"); + NazaraAssert(m_subMeshMap.find(identifier) == m_subMeshMap.end(), "SubMesh identifier \"" + identifier + "\" is already in use"); NazaraAssert(subMesh, "Invalid submesh"); - NazaraAssert(subMesh->GetAnimationType() == m_impl->animationType, "Submesh animation type doesn't match mesh animation type"); + NazaraAssert(subMesh->GetAnimationType() == m_animationType, "Submesh animation type doesn't match mesh animation type"); - std::size_t index = m_impl->subMeshes.size(); + std::size_t index = m_subMeshes.size(); - m_impl->subMeshes.emplace_back(subMesh); - m_impl->subMeshMap[identifier] = static_cast(index); + AddSubMesh(subMesh); - InvalidateAABB(); + m_subMeshMap[identifier] = static_cast(index); } SubMesh* Mesh::BuildSubMesh(const Primitive& primitive, const MeshParams& params) { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(m_impl->animationType == AnimationType_Static, "Submesh building only works for static meshes"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(m_animationType == AnimationType_Static, "Submesh building only works for static meshes"); NazaraAssert(params.IsValid(), "Invalid parameters"); NazaraAssert(params.vertexDeclaration->HasComponentOfType(VertexComponent_Position), "The vertex declaration doesn't have a Vector3 position component"); @@ -266,18 +244,11 @@ namespace Nz } } - StaticMeshRef subMesh = StaticMesh::New(this); - if (!subMesh->Create(vertexBuffer)) - { - NazaraError("Failed to create StaticMesh"); - return nullptr; - } - if (params.optimizeIndexBuffers) indexBuffer->Optimize(); + StaticMeshRef subMesh = StaticMesh::New(vertexBuffer, indexBuffer); subMesh->SetAABB(aabb); - subMesh->SetIndexBuffer(indexBuffer); AddSubMesh(subMesh); return subMesh; @@ -293,16 +264,15 @@ namespace Nz { Destroy(); - std::unique_ptr impl(new MeshImpl); - impl->animationType = AnimationType_Skeletal; - impl->jointCount = jointCount; - if (!impl->skeleton.Create(jointCount)) + m_animationType = AnimationType_Skeletal; + m_jointCount = jointCount; + if (!m_skeleton.Create(jointCount)) { NazaraError("Failed to create skeleton"); return false; } - m_impl = impl.release(); + m_isValid = true; return true; } @@ -311,236 +281,244 @@ namespace Nz { Destroy(); - m_impl = new MeshImpl; - m_impl->animationType = AnimationType_Static; + m_animationType = AnimationType_Static; + m_isValid = true; return true; } void Mesh::Destroy() { - if (m_impl) + if (m_isValid) { OnMeshDestroy(this); - delete m_impl; - m_impl = nullptr; + m_animationPath.Clear(); + m_materialData.clear(); + m_materialData.resize(1); + m_skeleton.Destroy(); + m_subMeshes.clear(); + m_subMeshMap.clear(); + + m_isValid = false; } } void Mesh::GenerateNormals() { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - for (SubMesh* subMesh : m_impl->subMeshes) - subMesh->GenerateNormals(); + for (SubMeshData& data : m_subMeshes) + data.subMesh->GenerateNormals(); } void Mesh::GenerateNormalsAndTangents() { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - for (SubMesh* subMesh : m_impl->subMeshes) - subMesh->GenerateNormalsAndTangents(); + for (SubMeshData& data : m_subMeshes) + data.subMesh->GenerateNormalsAndTangents(); } void Mesh::GenerateTangents() { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - for (SubMesh* subMesh : m_impl->subMeshes) - subMesh->GenerateTangents(); + for (SubMeshData& data : m_subMeshes) + data.subMesh->GenerateTangents(); } const Boxf& Mesh::GetAABB() const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - if (!m_impl->aabbUpdated) + if (!m_aabbUpdated) { - std::size_t subMeshCount = m_impl->subMeshes.size(); + std::size_t subMeshCount = m_subMeshes.size(); if (subMeshCount > 0) { - m_impl->aabb.Set(m_impl->subMeshes[0]->GetAABB()); + m_aabb.Set(m_subMeshes.front().subMesh->GetAABB()); for (std::size_t i = 1; i < subMeshCount; ++i) - m_impl->aabb.ExtendTo(m_impl->subMeshes[i]->GetAABB()); + m_aabb.ExtendTo(m_subMeshes[i].subMesh->GetAABB()); } else - m_impl->aabb.MakeZero(); + m_aabb.MakeZero(); - m_impl->aabbUpdated = true; + m_aabbUpdated = true; } - return m_impl->aabb; + return m_aabb; } String Mesh::GetAnimation() const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - return m_impl->animationPath; + return m_animationPath; } AnimationType Mesh::GetAnimationType() const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - return m_impl->animationType; + return m_animationType; } UInt32 Mesh::GetJointCount() const { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(m_impl->animationType == AnimationType_Skeletal, "Mesh is not skeletal"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(m_animationType == AnimationType_Skeletal, "Mesh is not skeletal"); - return m_impl->jointCount; + return m_jointCount; } ParameterList& Mesh::GetMaterialData(UInt32 index) { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(index < m_impl->materialData.size(), "Material index out of range"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(index < m_materialData.size(), "Material index out of range"); - return m_impl->materialData[index]; + return m_materialData[index]; } const ParameterList& Mesh::GetMaterialData(UInt32 index) const { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(index < m_impl->materialData.size(), "Material index out of range"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(index < m_materialData.size(), "Material index out of range"); - return m_impl->materialData[index]; + return m_materialData[index]; } UInt32 Mesh::GetMaterialCount() const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - return static_cast(m_impl->materialData.size()); + return static_cast(m_materialData.size()); } Skeleton* Mesh::GetSkeleton() { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(m_impl->animationType == AnimationType_Skeletal, "Mesh is not skeletal"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(m_animationType == AnimationType_Skeletal, "Mesh is not skeletal"); - return &m_impl->skeleton; + return &m_skeleton; } const Skeleton* Mesh::GetSkeleton() const { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(m_impl->animationType == AnimationType_Skeletal, "Mesh is not skeletal"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(m_animationType == AnimationType_Skeletal, "Mesh is not skeletal"); - return &m_impl->skeleton; + return &m_skeleton; } SubMesh* Mesh::GetSubMesh(const String& identifier) { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - auto it = m_impl->subMeshMap.find(identifier); - NazaraAssert(it != m_impl->subMeshMap.end(), "SubMesh " + identifier + " not found"); + auto it = m_subMeshMap.find(identifier); + NazaraAssert(it != m_subMeshMap.end(), "SubMesh " + identifier + " not found"); - return m_impl->subMeshes[it->second]; + return m_subMeshes[it->second].subMesh; } SubMesh* Mesh::GetSubMesh(UInt32 index) { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(index < m_impl->subMeshes.size(), "Submesh index out of range"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(index < m_subMeshes.size(), "Submesh index out of range"); - return m_impl->subMeshes[index]; + return m_subMeshes[index].subMesh; } const SubMesh* Mesh::GetSubMesh(const String& identifier) const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - auto it = m_impl->subMeshMap.find(identifier); - NazaraAssert(it != m_impl->subMeshMap.end(), "SubMesh " + identifier + " not found"); + auto it = m_subMeshMap.find(identifier); + NazaraAssert(it != m_subMeshMap.end(), "SubMesh " + identifier + " not found"); - return m_impl->subMeshes[it->second]; + return m_subMeshes[it->second].subMesh; } const SubMesh* Mesh::GetSubMesh(UInt32 index) const { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(index < m_impl->subMeshes.size(), "Submesh index out of range"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(index < m_subMeshes.size(), "Submesh index out of range"); - return m_impl->subMeshes[index]; + return m_subMeshes[index].subMesh; } UInt32 Mesh::GetSubMeshCount() const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - return static_cast(m_impl->subMeshes.size()); + return static_cast(m_subMeshes.size()); } UInt32 Mesh::GetSubMeshIndex(const String& identifier) const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - auto it = m_impl->subMeshMap.find(identifier); - NazaraAssert(it != m_impl->subMeshMap.end(), "SubMesh " + identifier + " not found"); + auto it = m_subMeshMap.find(identifier); + NazaraAssert(it != m_subMeshMap.end(), "SubMesh " + identifier + " not found"); return it->second; } UInt32 Mesh::GetTriangleCount() const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); UInt32 triangleCount = 0; - for (SubMesh* subMesh : m_impl->subMeshes) - triangleCount += subMesh->GetTriangleCount(); + for (const SubMeshData& data : m_subMeshes) + triangleCount += data.subMesh->GetTriangleCount(); return triangleCount; } UInt32 Mesh::GetVertexCount() const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); UInt32 vertexCount = 0; - for (SubMesh* subMesh : m_impl->subMeshes) - vertexCount += subMesh->GetVertexCount(); + for (const SubMeshData& data : m_subMeshes) + vertexCount += data.subMesh->GetVertexCount(); return vertexCount; } void Mesh::InvalidateAABB() const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - m_impl->aabbUpdated = false; + m_aabbUpdated = false; + + OnMeshInvalidateAABB(this); } bool Mesh::HasSubMesh(const String& identifier) const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - return m_impl->subMeshMap.find(identifier) != m_impl->subMeshMap.end(); + return m_subMeshMap.find(identifier) != m_subMeshMap.end(); } bool Mesh::HasSubMesh(UInt32 index) const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - return index < m_impl->subMeshes.size(); + return index < m_subMeshes.size(); } bool Mesh::IsAnimable() const { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - return m_impl->animationType != AnimationType_Static; + return m_animationType != AnimationType_Static; } bool Mesh::IsValid() const { - return m_impl != nullptr; + return m_isValid; } bool Mesh::LoadFromFile(const String& filePath, const MeshParams& params) @@ -560,20 +538,20 @@ namespace Nz void Mesh::Recenter() { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(m_impl->animationType == AnimationType_Static, "Mesh is not static"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(m_animationType == AnimationType_Static, "Mesh is not static"); // The center of our mesh is the center of our *global* AABB Vector3f center = GetAABB().GetCenter(); - for (SubMesh* subMesh : m_impl->subMeshes) + for (SubMeshData& data : m_subMeshes) { - StaticMesh* staticMesh = static_cast(subMesh); + StaticMesh& staticMesh = static_cast(*data.subMesh); - BufferMapper mapper(staticMesh->GetVertexBuffer(), BufferAccess_ReadWrite); + BufferMapper mapper(staticMesh.GetVertexBuffer(), BufferAccess_ReadWrite); MeshVertex* vertices = static_cast(mapper.GetPointer()); - UInt32 vertexCount = staticMesh->GetVertexCount(); + UInt32 vertexCount = staticMesh.GetVertexCount(); for (UInt32 i = 0; i < vertexCount; ++i) { vertices->position -= center; @@ -581,13 +559,11 @@ namespace Nz } // Our AABB doesn't change shape, only position - Boxf aabb = staticMesh->GetAABB(); + Boxf aabb = staticMesh.GetAABB(); aabb.Translate(-center); - staticMesh->SetAABB(aabb); + staticMesh.SetAABB(aabb); // This will invalidate our AABB } - - InvalidateAABB(); } void Mesh::RemoveSubMesh(const String& identifier) @@ -595,22 +571,22 @@ namespace Nz UInt32 index = GetSubMeshIndex(identifier); // On déplace l'itérateur du début d'une distance de x - auto it2 = m_impl->subMeshes.begin(); + auto it2 = m_subMeshes.begin(); std::advance(it2, index); - m_impl->subMeshes.erase(it2); + m_subMeshes.erase(it2); InvalidateAABB(); } void Mesh::RemoveSubMesh(UInt32 index) { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(index < m_impl->subMeshes.size(), "Submesh index out of range"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(index < m_subMeshes.size(), "Submesh index out of range"); // On déplace l'itérateur du début de x - auto it = m_impl->subMeshes.begin(); + auto it = m_subMeshes.begin(); std::advance(it, index); - m_impl->subMeshes.erase(it); + m_subMeshes.erase(it); InvalidateAABB(); } @@ -627,34 +603,34 @@ namespace Nz void Mesh::SetAnimation(const String& animationPath) { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); - m_impl->animationPath = animationPath; + m_animationPath = animationPath; } void Mesh::SetMaterialData(UInt32 matIndex, ParameterList data) { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(matIndex < m_impl->materialData.size(), "Material index out of range"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(matIndex < m_materialData.size(), "Material index out of range"); - m_impl->materialData[matIndex] = std::move(data); + m_materialData[matIndex] = std::move(data); } void Mesh::SetMaterialCount(UInt32 matCount) { - NazaraAssert(m_impl, "Mesh should be created first"); + NazaraAssert(m_isValid, "Mesh should be created first"); NazaraAssert(matCount > 0, "A mesh should have at least a material"); - m_impl->materialData.resize(matCount); + m_materialData.resize(matCount); #ifdef NAZARA_DEBUG - for (SubMesh* subMesh : m_impl->subMeshes) + for (SubMeshData& data : m_subMeshes) { - UInt32 matIndex = subMesh->GetMaterialIndex(); + UInt32 matIndex = data.subMesh->GetMaterialIndex(); if (matIndex >= matCount) { - subMesh->SetMaterialIndex(0); // To prevent a crash - NazaraWarning("SubMesh " + String::Pointer(subMesh) + " material index is over mesh new material count (" + String::Number(matIndex) + " >= " + String::Number(matCount) + "), setting it to first material"); + data.subMesh->SetMaterialIndex(0); // To prevent a crash + NazaraWarning("SubMesh " + String::Pointer(data.subMesh) + " material index is over mesh new material count (" + String::Number(matIndex) + " >= " + String::Number(matCount) + "), setting it to first material"); } } #endif @@ -662,19 +638,19 @@ namespace Nz void Mesh::Transform(const Matrix4f& matrix) { - NazaraAssert(m_impl, "Mesh should be created first"); - NazaraAssert(m_impl->animationType == AnimationType_Static, "Mesh is not static"); + NazaraAssert(m_isValid, "Mesh should be created first"); + NazaraAssert(m_animationType == AnimationType_Static, "Mesh is not static"); - for (SubMesh* subMesh : m_impl->subMeshes) + for (SubMeshData& data : m_subMeshes) { - StaticMesh* staticMesh = static_cast(subMesh); + StaticMesh& staticMesh = static_cast(*data.subMesh); - BufferMapper mapper(staticMesh->GetVertexBuffer(), BufferAccess_ReadWrite); + BufferMapper mapper(staticMesh.GetVertexBuffer(), BufferAccess_ReadWrite); MeshVertex* vertices = static_cast(mapper.GetPointer()); Boxf aabb(vertices->position.x, vertices->position.y, vertices->position.z, 0.f, 0.f, 0.f); - UInt32 vertexCount = staticMesh->GetVertexCount(); + UInt32 vertexCount = staticMesh.GetVertexCount(); for (UInt32 i = 0; i < vertexCount; ++i) { vertices->position = matrix.Transform(vertices->position); @@ -683,10 +659,8 @@ namespace Nz vertices++; } - staticMesh->SetAABB(aabb); + staticMesh.SetAABB(aabb); //< This will invalidate our AABB } - - InvalidateAABB(); } bool Mesh::Initialize() diff --git a/src/Nazara/Utility/SkeletalMesh.cpp b/src/Nazara/Utility/SkeletalMesh.cpp index 02550a4d6..e5a3a3268 100644 --- a/src/Nazara/Utility/SkeletalMesh.cpp +++ b/src/Nazara/Utility/SkeletalMesh.cpp @@ -8,8 +8,16 @@ namespace Nz { - SkeletalMesh::SkeletalMesh(const Mesh* parent) : - SubMesh(parent) + SkeletalMesh::SkeletalMesh(VertexBuffer* vertexBuffer, const IndexBuffer* indexBuffer) : + m_aabb(Nz::Boxf::Zero()), + m_indexBuffer(indexBuffer), + m_vertexBuffer(vertexBuffer) + { + NazaraAssert(m_vertexBuffer, "Invalid vertex buffer"); + } + + SkeletalMesh::SkeletalMesh(const Mesh* /*parent*/) : + m_aabb(Nz::Boxf::Zero()) { } @@ -90,6 +98,8 @@ namespace Nz void SkeletalMesh::SetAABB(const Boxf& aabb) { m_aabb = aabb; + + OnSubMeshInvalidateAABB(this); } void SkeletalMesh::SetIndexBuffer(const IndexBuffer* indexBuffer) diff --git a/src/Nazara/Utility/StaticMesh.cpp b/src/Nazara/Utility/StaticMesh.cpp index 7c7637481..b363736f7 100644 --- a/src/Nazara/Utility/StaticMesh.cpp +++ b/src/Nazara/Utility/StaticMesh.cpp @@ -10,8 +10,16 @@ namespace Nz { - StaticMesh::StaticMesh(const Mesh* parent) : - SubMesh(parent) + StaticMesh::StaticMesh(VertexBuffer* vertexBuffer, const IndexBuffer* indexBuffer) : + m_aabb(Nz::Boxf::Zero()), + m_indexBuffer(indexBuffer), + m_vertexBuffer(vertexBuffer) + { + NazaraAssert(m_vertexBuffer, "Invalid vertex buffer"); + } + + StaticMesh::StaticMesh(const Mesh* /*parent*/) : + m_aabb(Nz::Boxf::Zero()) { } @@ -69,7 +77,7 @@ namespace Nz { // On lock le buffer pour itérer sur toutes les positions et composer notre AABB VertexMapper mapper(m_vertexBuffer, BufferAccess_ReadOnly); - m_aabb = ComputeAABB(mapper.GetComponentPtr(VertexComponent_Position), m_vertexBuffer->GetVertexCount()); + SetAABB(ComputeAABB(mapper.GetComponentPtr(VertexComponent_Position), m_vertexBuffer->GetVertexCount())); return true; } @@ -117,10 +125,12 @@ namespace Nz void StaticMesh::SetAABB(const Boxf& aabb) { m_aabb = aabb; + + OnSubMeshInvalidateAABB(this); } void StaticMesh::SetIndexBuffer(const IndexBuffer* indexBuffer) { m_indexBuffer = indexBuffer; -} + } } diff --git a/src/Nazara/Utility/SubMesh.cpp b/src/Nazara/Utility/SubMesh.cpp index 44e601d22..0b7a95b31 100644 --- a/src/Nazara/Utility/SubMesh.cpp +++ b/src/Nazara/Utility/SubMesh.cpp @@ -12,14 +12,18 @@ namespace Nz { - SubMesh::SubMesh(const Mesh* parent) : - RefCounted(false), // Un SubMesh n'est pas persistant par défaut + SubMesh::SubMesh() : + RefCounted(false), // wut m_primitiveMode(PrimitiveMode_TriangleList), - m_parent(parent), m_matIndex(0) { } + SubMesh::SubMesh(const Mesh* /*parent*/) : + SubMesh() + { + } + SubMesh::~SubMesh() { OnSubMeshRelease(this); @@ -160,11 +164,6 @@ namespace Nz while (iterator.Advance()); } - const Mesh* SubMesh::GetParent() const - { - return m_parent; - } - PrimitiveMode SubMesh::GetPrimitiveMode() const { return m_primitiveMode; From d53c245c78fc6008c421709c82c99d4a2b8264e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 3 May 2018 13:32:53 +0200 Subject: [PATCH 031/194] Graphics/Model: Fix model not invalidating their bounding volume when their mesh AABB got updated --- ChangeLog.md | 1 + include/Nazara/Graphics/Model.hpp | 8 +++++--- include/Nazara/Graphics/Model.inl | 17 ++++++++++++++--- src/Nazara/Graphics/Model.cpp | 6 ++++++ 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 7242fbaf4..7e108fe9b 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -98,6 +98,7 @@ Nazara Engine: - ⚠️ Refactored Mesh/SubMesh, allowing a submesh to be attached to multiple meshes, deprecating Create/Destroy methods - SubMesh class now has a OnSubMeshInvalidateAABB signal, triggered when a new AABB is set to the submesh - Mesh class now has a OnMeshInvalidateAABB signal, triggered when a mesh invalidates its AABB, which is also submesh updates its AABB +- Model now invalidate properly their bounding volume when their mesh AABB is updated Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Graphics/Model.hpp b/include/Nazara/Graphics/Model.hpp index b37d68a2e..dfdcc8ee2 100644 --- a/include/Nazara/Graphics/Model.hpp +++ b/include/Nazara/Graphics/Model.hpp @@ -41,8 +41,8 @@ namespace Nz public: inline Model(); - Model(const Model& model) = default; - Model(Model&& model) = default; + Model(const Model& model); + Model(Model&& model) = delete; virtual ~Model(); void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override; @@ -66,7 +66,7 @@ namespace Nz virtual void SetMesh(Mesh* mesh); Model& operator=(const Model& node) = default; - Model& operator=(Model&& node) = default; + Model& operator=(Model&& node) = delete; template static ModelRef New(Args&&... args); @@ -75,6 +75,8 @@ namespace Nz MeshRef m_mesh; + NazaraSlot(Mesh, OnMeshInvalidateAABB, m_meshAABBInvalidationSlot); + static ModelLoader::LoaderList s_loaders; }; } diff --git a/include/Nazara/Graphics/Model.inl b/include/Nazara/Graphics/Model.inl index 486665f3a..9078b6de3 100644 --- a/include/Nazara/Graphics/Model.inl +++ b/include/Nazara/Graphics/Model.inl @@ -2,6 +2,7 @@ // This file is part of the "Nazara Engine - Graphics module" // For conditions of distribution and use, see copyright notice in Config.hpp +#include #include #include @@ -10,11 +11,21 @@ namespace Nz /*! * \brief Constructs a Model object by default */ - Model::Model() + inline Model::Model() { ResetMaterials(0); } + /*! + * \brief Constructs a Model object by copying another + * + * \param model Model to copy + */ + inline Model::Model(const Model& model) + { + SetMesh(model.m_mesh); + } + /*! * \brief Adds this model to a render queue, using user-specified transform matrix and render order * @@ -25,8 +36,8 @@ namespace Nz * \param renderOrder Specify the render queue layer to be used * \param scissorRect The Scissor rect to uses for rendering */ - void Model::AddToRenderQueue(AbstractRenderQueue* renderQueue, const Matrix4f& transformMatrix, int renderOrder, const Recti& scissorRect) const -{ + inline void Model::AddToRenderQueue(AbstractRenderQueue* renderQueue, const Matrix4f& transformMatrix, int renderOrder, const Recti& scissorRect) const + { InstanceData instanceData(Nz::Matrix4f::Identity()); instanceData.renderOrder = renderOrder; instanceData.transformMatrix = transformMatrix; diff --git a/src/Nazara/Graphics/Model.cpp b/src/Nazara/Graphics/Model.cpp index 05b8bc909..a01199d32 100644 --- a/src/Nazara/Graphics/Model.cpp +++ b/src/Nazara/Graphics/Model.cpp @@ -252,9 +252,15 @@ namespace Nz m_mesh = mesh; if (m_mesh) + { ResetMaterials(mesh->GetMaterialCount()); + m_meshAABBInvalidationSlot.Connect(m_mesh->OnMeshInvalidateAABB, [this](const Nz::Mesh*) { InvalidateBoundingVolume(); }); + } else + { ResetMaterials(0); + m_meshAABBInvalidationSlot.Disconnect(); + } InvalidateBoundingVolume(); } From adab3cbc9301eef512592a3f73c0235c0fb3d996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 3 May 2018 13:33:29 +0200 Subject: [PATCH 032/194] Sdk/DebugSystem: Fix OBB not taking offset in account --- SDK/src/NDK/Systems/DebugSystem.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 1b5634eaf..182191f7d 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -62,9 +62,11 @@ namespace Ndk const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); + Nz::Boxf aabb = entityGfx.GetBoundingVolume().aabb; + Nz::Matrix4f transformMatrix = Nz::Matrix4f::Identity(); - transformMatrix.SetScale(entityGfx.GetBoundingVolume().aabb.GetLengths()); - transformMatrix.SetTranslation(entityGfx.GetBoundingVolume().aabb.GetCenter()); + transformMatrix.SetScale(aabb.GetLengths()); + transformMatrix.SetTranslation(aabb.GetCenter()); renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); } @@ -82,8 +84,13 @@ namespace Ndk const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); + Nz::Boxf obb = entityGfx.GetBoundingVolume().obb.localBox; + Nz::Matrix4f transformMatrix = instanceData.transformMatrix; - transformMatrix.ApplyScale(entityGfx.GetBoundingVolume().obb.localBox.GetLengths()); + Nz::Vector3f obbCenter = transformMatrix.Transform(obb.GetCenter(), 0.f); //< Apply rotation/scale to obb center, to display it at a correct position + + transformMatrix.ApplyScale(obb.GetLengths()); + transformMatrix.ApplyTranslation(obbCenter); renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); } From 41857a69ca13080b86647997196c36590fb0853a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 3 May 2018 14:38:32 +0200 Subject: [PATCH 033/194] Utility/OBJLoader: Remove debug line... --- src/Nazara/Utility/Formats/OBJLoader.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Nazara/Utility/Formats/OBJLoader.cpp b/src/Nazara/Utility/Formats/OBJLoader.cpp index ba8f90f73..90122fc61 100644 --- a/src/Nazara/Utility/Formats/OBJLoader.cpp +++ b/src/Nazara/Utility/Formats/OBJLoader.cpp @@ -313,7 +313,6 @@ namespace Nz StaticMeshRef subMesh = StaticMesh::New(vertexBuffer, indexBuffer); subMesh->GenerateAABB(); - subMesh->SetAABB(subMesh->GetAABB() * 0.5f); subMesh->SetMaterialIndex(meshes[i].material); // Ce que nous pouvons générer dépend des données à disposition (par exemple les tangentes nécessitent des coordonnées de texture) From 70e0787b93f6603d871687f7dc49718a4e420ae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 3 May 2018 14:41:32 +0200 Subject: [PATCH 034/194] Utility/OBJLoader: Add index buffer optimization back Fixes incorrect removal from d94baf133bebee04c5a65777457be9ae38163c0d --- src/Nazara/Utility/Formats/OBJLoader.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Nazara/Utility/Formats/OBJLoader.cpp b/src/Nazara/Utility/Formats/OBJLoader.cpp index 90122fc61..23a569337 100644 --- a/src/Nazara/Utility/Formats/OBJLoader.cpp +++ b/src/Nazara/Utility/Formats/OBJLoader.cpp @@ -259,6 +259,9 @@ namespace Nz indexMapper.Unmap(); // Pour laisser les autres tâches affecter l'index buffer + if (parameters.optimizeIndexBuffers) + indexBuffer->Optimize(); + // Remplissage des vertices // Make sure the normal matrix won't rescale our normals From 8b6311de634c1181da766c1eec5613794f0b852b Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 13 May 2018 14:42:27 +0200 Subject: [PATCH 035/194] Lua/LuaState: Add Load methods --- ChangeLog.md | 2 +- include/Nazara/Lua/LuaState.hpp | 5 ++ src/Nazara/Lua/LuaState.cpp | 100 +++++++++++++++++++++----------- 3 files changed, 71 insertions(+), 36 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 7e108fe9b..db85ecb5d 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -192,7 +192,7 @@ Nazara Engine: - Added VertexMapper::GetVertexCount() - Added VertexMapper::HasComponentOfType() - Fixed SimpleTextDrawer bounds computation - +- Added LuaState::Load methods which allows to load (compile) lua code to function without executing it. Nazara Development Kit: - ⚠️ Components no longer need to be copyable by assignation diff --git a/include/Nazara/Lua/LuaState.hpp b/include/Nazara/Lua/LuaState.hpp index 14f0898c2..5774933a4 100644 --- a/include/Nazara/Lua/LuaState.hpp +++ b/include/Nazara/Lua/LuaState.hpp @@ -112,6 +112,11 @@ namespace Nz bool IsOfType(int index, const String& tname) const; bool IsValid(int index) const; + bool Load(const String& code); + bool LoadFromFile(const String& filePath); + bool LoadFromMemory(const void* data, std::size_t size); + bool LoadFromStream(Stream& stream); + long long Length(int index) const; std::size_t LengthRaw(int index) const; diff --git a/src/Nazara/Lua/LuaState.cpp b/src/Nazara/Lua/LuaState.cpp index 67bf8efa0..e9b18eaef 100644 --- a/src/Nazara/Lua/LuaState.cpp +++ b/src/Nazara/Lua/LuaState.cpp @@ -355,39 +355,18 @@ namespace Nz if (code.IsEmpty()) return true; - if (luaL_loadstring(m_state, code.GetConstBuffer()) != 0) - { - m_lastError = lua_tostring(m_state, -1); - lua_pop(m_state, 1); - + if (!Load(code)) return false; - } - return Run(0, LUA_MULTRET); + return Call(0); } bool LuaState::ExecuteFromFile(const String& filePath) { - File file(filePath); - if (!file.Open(OpenMode_ReadOnly | OpenMode_Text)) - { - NazaraError("Failed to open file"); + if (!LoadFromFile(filePath)) return false; - } - std::size_t length = static_cast(file.GetSize()); - - String source(length, '\0'); - - if (file.Read(&source[0], length) != length) - { - NazaraError("Failed to read file"); - return false; - } - - file.Close(); - - return Execute(source); + return Call(0); } bool LuaState::ExecuteFromMemory(const void* data, std::size_t size) @@ -398,18 +377,10 @@ namespace Nz bool LuaState::ExecuteFromStream(Stream& stream) { - StreamData data; - data.stream = &stream; - - if (lua_load(m_state, StreamReader, &data, "C++", nullptr) != 0) - { - m_lastError = lua_tostring(m_state, -1); - lua_pop(m_state, 1); - + if (!LoadFromStream(stream)) return false; - } - return Run(0, LUA_MULTRET); + return Call(0); } int LuaState::GetAbsIndex(int index) const @@ -545,6 +516,65 @@ namespace Nz return lua_isnoneornil(m_state, index) == 0; } + bool LuaState::Load(const String& code) + { + if (luaL_loadstring(m_state, code.GetConstBuffer()) != 0) + { + m_lastError = lua_tostring(m_state, -1); + lua_pop(m_state, 1); + + return false; + } + + return true; + } + + bool LuaState::LoadFromFile(const String& filePath) + { + File file(filePath); + if (!file.Open(OpenMode_ReadOnly | OpenMode_Text)) + { + NazaraError("Failed to open file"); + return false; + } + + std::size_t length = static_cast(file.GetSize()); + + String source(length, '\0'); + + if (file.Read(&source[0], length) != length) + { + NazaraError("Failed to read file"); + return false; + } + + file.Close(); + + return Load(source); + } + + bool LuaState::LoadFromMemory(const void* data, std::size_t size) + { + MemoryView stream(data, size); + return LoadFromStream(stream); + } + + bool LuaState::LoadFromStream(Stream& stream) + { + StreamData data; + data.stream = &stream; + + if (lua_load(m_state, StreamReader, &data, "C++", nullptr) != 0) + { + m_lastError = lua_tostring(m_state, -1); + lua_pop(m_state, 1); + + return false; + } + + return true; + } + long long LuaState::Length(int index) const { return luaL_len(m_state, index); From b22c93fa5faefed8c6074207434c4a81626e5779 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 13 May 2018 14:44:09 +0200 Subject: [PATCH 036/194] Network/ENetPeer: Add GetLastReceiveTime --- ChangeLog.md | 1 + include/Nazara/Network/ENetPeer.hpp | 1 + include/Nazara/Network/ENetPeer.inl | 5 +++++ 3 files changed, 7 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index db85ecb5d..0a1e8f070 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -193,6 +193,7 @@ Nazara Engine: - Added VertexMapper::HasComponentOfType() - Fixed SimpleTextDrawer bounds computation - Added LuaState::Load methods which allows to load (compile) lua code to function without executing it. +- Added ENetPeer::GetLastReceiveTime() which gives the last time a reliable packet was received. Nazara Development Kit: - ⚠️ Components no longer need to be copyable by assignation diff --git a/include/Nazara/Network/ENetPeer.hpp b/include/Nazara/Network/ENetPeer.hpp index a58d28201..c1822e761 100644 --- a/include/Nazara/Network/ENetPeer.hpp +++ b/include/Nazara/Network/ENetPeer.hpp @@ -47,6 +47,7 @@ namespace Nz void DisconnectNow(UInt32 data); inline const IpAddress& GetAddress() const; + inline UInt32 GetLastReceiveTime() const; inline UInt32 GetMtu() const; inline UInt32 GetPacketThrottleAcceleration() const; inline UInt32 GetPacketThrottleDeceleration() const; diff --git a/include/Nazara/Network/ENetPeer.inl b/include/Nazara/Network/ENetPeer.inl index 2a833e530..3f8ffa846 100644 --- a/include/Nazara/Network/ENetPeer.inl +++ b/include/Nazara/Network/ENetPeer.inl @@ -22,6 +22,11 @@ namespace Nz return m_address; } + inline UInt32 ENetPeer::GetLastReceiveTime() const + { + return m_lastReceiveTime; + } + inline UInt32 ENetPeer::GetMtu() const { return m_mtu; From f864fc8a523460855e94eb2d5490595099b1b89d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 16 May 2018 12:55:36 +0200 Subject: [PATCH 037/194] Build: Gather projects around categories --- ChangeLog.md | 1 + build/scripts/common.lua | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 0a1e8f070..d29c5fbb9 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -16,6 +16,7 @@ Miscellaneous: - Add Lua unit tests - NDEBUG is now defined in Release - Replaced typedefs keywords with modern using keywords +- When supported, projects are now parts of a virtual "workspace group" according to their kind Nazara Engine: - VertexMapper:GetComponentPtr no longer throw an error if component is disabled or incompatible with template type, instead a null pointer is returned. diff --git a/build/scripts/common.lua b/build/scripts/common.lua index 750e2211b..730195bf0 100644 --- a/build/scripts/common.lua +++ b/build/scripts/common.lua @@ -71,10 +71,21 @@ function NazaraBuild:Execute() configurations(configs) end + if (self.Config["PremakeProject"] and os.ishost("windows")) then + group("_Premake") + + local commandLine = "premake5.exe " .. table.concat(_ARGV, ' ') + project("Regenerate premake") + kind("Utility") + prebuildcommands("cd .. && " .. commandLine) + end + -- Extern libraries if (self.Config["BuildDependencies"]) then self:FilterLibDirectory("../thirdparty/genlib/", targetdir) -- For generated libraries + group("Thirdparties") + for k, libTable in ipairs(self.OrderedExtLibs) do project(libTable.Name) @@ -112,14 +123,9 @@ function NazaraBuild:Execute() end end - if (self.Config["PremakeProject"] and os.ishost("windows")) then - local commandLine = "premake5.exe " .. table.concat(_ARGV, ' ') - project("_PremakeProject") - kind("Utility") - prebuildcommands("cd .. && " .. commandLine) - end - -- Modules + group("Engine Modules") + if (_OPTIONS["united"]) then project("NazaraEngine") @@ -175,6 +181,8 @@ function NazaraBuild:Execute() end -- Tools + group("Engine SDK - Tools") + for k, toolTable in ipairs(self.OrderedTools) do local prefix = "Nazara" if (toolTable.Kind == "plugin") then @@ -243,6 +251,8 @@ function NazaraBuild:Execute() filter({}) end + group("Examples") + for k, exampleTable in ipairs(self.OrderedExamples) do local destPath = "../examples/bin" From 74773e9daa26c0b85623a430a04148ac94536dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 16 May 2018 15:54:55 +0200 Subject: [PATCH 038/194] Core/Flags: Add operator&|^ for enum and flags --- ChangeLog.md | 1 + include/Nazara/Core/Flags.hpp | 6 ++- include/Nazara/Core/Flags.inl | 75 ++++++++++++++++++++++++++++------- 3 files changed, 66 insertions(+), 16 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index d29c5fbb9..28800ec0e 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -100,6 +100,7 @@ Nazara Engine: - SubMesh class now has a OnSubMeshInvalidateAABB signal, triggered when a new AABB is set to the submesh - Mesh class now has a OnMeshInvalidateAABB signal, triggered when a mesh invalidates its AABB, which is also submesh updates its AABB - Model now invalidate properly their bounding volume when their mesh AABB is updated +- Added operator&/|/^ taking an enumeration value and a Flags object using the same enumeration type. Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Core/Flags.hpp b/include/Nazara/Core/Flags.hpp index c30959446..92c97de9e 100644 --- a/include/Nazara/Core/Flags.hpp +++ b/include/Nazara/Core/Flags.hpp @@ -73,12 +73,16 @@ namespace Nz BitField m_value; }; + template constexpr Flags operator&(E lhs, Flags rhs); + template constexpr Flags operator|(E lhs, Flags rhs); + template constexpr Flags operator^(E lhs, Flags rhs); + // Little hack to have them in both Nz and global scope namespace FlagsOperators { template constexpr std::enable_if_t::value, Flags> operator~(E lhs); - template constexpr std::enable_if_t::value, Flags> operator|(E lhs, E rhs); template constexpr std::enable_if_t::value, Flags> operator&(E lhs, E rhs); + template constexpr std::enable_if_t::value, Flags> operator|(E lhs, E rhs); template constexpr std::enable_if_t::value, Flags> operator^(E lhs, E rhs); } diff --git a/include/Nazara/Core/Flags.inl b/include/Nazara/Core/Flags.inl index 36bb32ea0..2b57a59a8 100644 --- a/include/Nazara/Core/Flags.inl +++ b/include/Nazara/Core/Flags.inl @@ -221,6 +221,51 @@ namespace Nz return 1U << static_cast(enumValue); } + /*! + * \brief Compare flag states + * \return Compared flags + * + * This will returns a copy of the Flags object compared with the enum state. + * + * \param lhs Enum to compare with flags. + * \param rhs Flags object. + */ + template + constexpr Flags operator&(E lhs, Flags rhs) + { + return rhs & lhs; + } + + /*! + * \brief Combine flag states + * \return Combined flags + * + * This will returns a copy of the Flags object combined with the enum state. + * + * \param lhs Enum to combine with flags. + * \param rhs Flags object. + */ + template + constexpr Flags operator|(E lhs, Flags rhs) + { + return rhs | lhs; + } + + /*! + * \brief XOR flag states + * \return XORed flags + * + * This will returns a copy of the Flags object XORed with the enum state. + * + * \param lhs Enum to XOR with flags. + * \param rhs Flags object. + */ + template + constexpr Flags operator^(E lhs, Flags rhs) + { + return rhs ^ lhs; + } + namespace FlagsOperators { @@ -238,21 +283,6 @@ namespace Nz return ~Flags(lhs); } - /*! - * \brief Override binary OR operator on enum to turns into a Flags object. - * \return A Flags object with combined enum states. - * - * \param lhs First enumeration value to combine. - * \param rhs Second enumeration value to combine. - * - * Returns a Flags object with combined states from the two enumeration values. - */ - template - constexpr std::enable_if_t::value, Flags> operator|(E lhs, E rhs) - { - return Flags(lhs) | rhs; - } - /*! * \brief Override binary AND operator on enum to turns into a Flags object. * \return A Flags object with compare enum states. @@ -269,6 +299,21 @@ namespace Nz return Flags(lhs) & rhs; } + /*! + * \brief Override binary OR operator on enum to turns into a Flags object. + * \return A Flags object with combined enum states. + * + * \param lhs First enumeration value to combine. + * \param rhs Second enumeration value to combine. + * + * Returns a Flags object with combined states from the two enumeration values. + */ + template + constexpr std::enable_if_t::value, Flags> operator|(E lhs, E rhs) + { + return Flags(lhs) | rhs; + } + /*! * \brief Override binary XOR operator on enum to turns into a Flags object. * \return A Flags object with XORed enum states. From 8e2efb50076ff04b97bd6c946f023148a698a6dc Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 20 May 2018 13:38:48 +0200 Subject: [PATCH 039/194] Graphics/TextSprite: Fix initial local bounds --- include/Nazara/Graphics/TextSprite.inl | 1 + 1 file changed, 1 insertion(+) diff --git a/include/Nazara/Graphics/TextSprite.inl b/include/Nazara/Graphics/TextSprite.inl index c35cd562e..04a3c1170 100644 --- a/include/Nazara/Graphics/TextSprite.inl +++ b/include/Nazara/Graphics/TextSprite.inl @@ -14,6 +14,7 @@ namespace Nz inline TextSprite::TextSprite() : m_color(Color::White), + m_localBounds(Nz::Recti::Zero()), m_scale(1.f) { ResetMaterials(1U); From efa727dfd4a5f2953a716a247d1c7b26f4783c16 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 21 May 2018 19:28:33 +0200 Subject: [PATCH 040/194] Build: Fix thirdparty target dir --- build/scripts/common.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/scripts/common.lua b/build/scripts/common.lua index 730195bf0..6eb1cfa64 100644 --- a/build/scripts/common.lua +++ b/build/scripts/common.lua @@ -82,8 +82,6 @@ function NazaraBuild:Execute() -- Extern libraries if (self.Config["BuildDependencies"]) then - self:FilterLibDirectory("../thirdparty/genlib/", targetdir) -- For generated libraries - group("Thirdparties") for k, libTable in ipairs(self.OrderedExtLibs) do @@ -105,6 +103,8 @@ function NazaraBuild:Execute() links(libTable.Libraries) libdirs("../thirdparty/lib/common") + self:FilterLibDirectory("../thirdparty/genlib/", targetdir) -- For generated libraries + filter(clangGccActions) buildoptions("-U__STRICT_ANSI__") From f2c16f916a4bcc4c78ae6b8d0ea9a58bb9eb76bc Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 21 May 2018 19:31:19 +0200 Subject: [PATCH 041/194] Lua/LuaState: Add error handling methods --- ChangeLog.md | 2 ++ include/Nazara/Lua/LuaCoroutine.hpp | 2 +- include/Nazara/Lua/LuaState.hpp | 14 +++++++---- src/Nazara/Lua/LuaCoroutine.cpp | 2 +- src/Nazara/Lua/LuaState.cpp | 39 ++++++++++++++++++++--------- 5 files changed, 40 insertions(+), 19 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 28800ec0e..7cd448e12 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -101,6 +101,8 @@ Nazara Engine: - Mesh class now has a OnMeshInvalidateAABB signal, triggered when a mesh invalidates its AABB, which is also submesh updates its AABB - Model now invalidate properly their bounding volume when their mesh AABB is updated - Added operator&/|/^ taking an enumeration value and a Flags object using the same enumeration type. +- Added LuaState::CallWithHandler methods, allowing to setup a error handler function +- Added LuaState::Traceback method Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Lua/LuaCoroutine.hpp b/include/Nazara/Lua/LuaCoroutine.hpp index cdda83b3a..753aa8a4f 100644 --- a/include/Nazara/Lua/LuaCoroutine.hpp +++ b/include/Nazara/Lua/LuaCoroutine.hpp @@ -31,7 +31,7 @@ namespace Nz private: LuaCoroutine(lua_State* internalState, int refIndex); - bool Run(int argCount, int resultCount) override; + bool Run(int argCount, int resultCount, int errHandler) override; int m_ref; }; diff --git a/include/Nazara/Lua/LuaState.hpp b/include/Nazara/Lua/LuaState.hpp index 5774933a4..67640925a 100644 --- a/include/Nazara/Lua/LuaState.hpp +++ b/include/Nazara/Lua/LuaState.hpp @@ -43,6 +43,8 @@ namespace Nz bool Call(unsigned int argCount); bool Call(unsigned int argCount, unsigned int resultCount); + bool CallWithHandler(unsigned int argCount, int errorHandler); + bool CallWithHandler(unsigned int argCount, unsigned int resultCount, int errorHandler); template T Check(int* index) const; template T Check(int* index, T defValue) const; @@ -84,10 +86,10 @@ namespace Nz void Error(const char* message) const; void Error(const String& message) const; - bool Execute(const String& code); - bool ExecuteFromFile(const String& filePath); - bool ExecuteFromMemory(const void* data, std::size_t size); - bool ExecuteFromStream(Stream& stream); + bool Execute(const String& code, int errorHandler = 0); + bool ExecuteFromFile(const String& filePath, int errorHandler = 0); + bool ExecuteFromMemory(const void* data, std::size_t size, int errorHandler = 0); + bool ExecuteFromStream(Stream& stream, int errorHandler = 0); int GetAbsIndex(int index) const; LuaType GetField(const char* fieldName, int tableIndex = -1) const; @@ -178,6 +180,8 @@ namespace Nz void* ToUserdata(int index, const char* tname) const; void* ToUserdata(int index, const String& tname) const; + void Traceback(const char* message = nullptr, int level = 0); + LuaState& operator=(const LuaState&) = default; LuaState& operator=(LuaState&& instance) = default; @@ -190,7 +194,7 @@ namespace Nz template std::enable_if_t::value, T> CheckBounds(int index, long long value) const; template std::enable_if_t::value, T> CheckBounds(int index, long long value) const; - virtual bool Run(int argCount, int resultCount); + virtual bool Run(int argCount, int resultCount, int errHandler); static int ProxyFunc(lua_State* internalState); diff --git a/src/Nazara/Lua/LuaCoroutine.cpp b/src/Nazara/Lua/LuaCoroutine.cpp index bccf8d7fc..ad3f40736 100644 --- a/src/Nazara/Lua/LuaCoroutine.cpp +++ b/src/Nazara/Lua/LuaCoroutine.cpp @@ -47,7 +47,7 @@ namespace Nz } } - bool LuaCoroutine::Run(int argCount, int /*resultCount*/) + bool LuaCoroutine::Run(int argCount, int /*resultCount*/, int /*errHandler*/) { return Resume(argCount) != Ternary_False; } diff --git a/src/Nazara/Lua/LuaState.cpp b/src/Nazara/Lua/LuaState.cpp index e9b18eaef..2e4dd78ea 100644 --- a/src/Nazara/Lua/LuaState.cpp +++ b/src/Nazara/Lua/LuaState.cpp @@ -144,12 +144,22 @@ namespace Nz bool LuaState::Call(unsigned int argCount) { - return Run(argCount, LUA_MULTRET); + return Run(argCount, LUA_MULTRET, 0); } bool LuaState::Call(unsigned int argCount, unsigned int resultCount) { - return Run(argCount, resultCount); + return Run(argCount, resultCount, 0); + } + + bool LuaState::CallWithHandler(int errorHandler, unsigned int argCount) + { + return Run(argCount, LUA_MULTRET, errorHandler); + } + + bool LuaState::CallWithHandler(int errorHandler, unsigned int argCount, unsigned int resultCount) + { + return Run(argCount, resultCount, errorHandler); } void LuaState::CheckAny(int index) const @@ -350,7 +360,7 @@ namespace Nz luaL_error(m_state, message.GetConstBuffer()); } - bool LuaState::Execute(const String& code) + bool LuaState::Execute(const String& code, int errorHandler) { if (code.IsEmpty()) return true; @@ -358,29 +368,29 @@ namespace Nz if (!Load(code)) return false; - return Call(0); + return CallWithHandler(errorHandler, 0); } - bool LuaState::ExecuteFromFile(const String& filePath) + bool LuaState::ExecuteFromFile(const String& filePath, int errorHandler) { if (!LoadFromFile(filePath)) return false; - return Call(0); + return CallWithHandler(errorHandler, 0); } - bool LuaState::ExecuteFromMemory(const void* data, std::size_t size) + bool LuaState::ExecuteFromMemory(const void* data, std::size_t size, int errorHandler) { MemoryView stream(data, size); - return ExecuteFromStream(stream); + return ExecuteFromStream(stream, errorHandler); } - bool LuaState::ExecuteFromStream(Stream& stream) + bool LuaState::ExecuteFromStream(Stream& stream, int errorHandler) { if (!LoadFromStream(stream)) return false; - return Call(0); + return CallWithHandler(errorHandler, 0); } int LuaState::GetAbsIndex(int index) const @@ -809,14 +819,19 @@ namespace Nz return luaL_testudata(m_state, index, tname.GetConstBuffer()); } - bool LuaState::Run(int argCount, int resultCount) + void LuaState::Traceback(const char* message, int level) + { + luaL_traceback(m_state, m_state, message, level); + } + + bool LuaState::Run(int argCount, int resultCount, int errHandler) { LuaInstance& instance = GetInstance(m_state); if (instance.m_level++ == 0) instance.m_clock.Restart(); - int status = lua_pcall(m_state, argCount, resultCount, 0); + int status = lua_pcall(m_state, argCount, resultCount, errHandler); instance.m_level--; From 3e82413604c46b5860d4f4958ecbcd60db53aae5 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 21 May 2018 19:41:11 +0200 Subject: [PATCH 042/194] Oops --- src/Nazara/Lua/LuaState.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Nazara/Lua/LuaState.cpp b/src/Nazara/Lua/LuaState.cpp index 2e4dd78ea..dfbec1117 100644 --- a/src/Nazara/Lua/LuaState.cpp +++ b/src/Nazara/Lua/LuaState.cpp @@ -152,12 +152,12 @@ namespace Nz return Run(argCount, resultCount, 0); } - bool LuaState::CallWithHandler(int errorHandler, unsigned int argCount) + bool LuaState::CallWithHandler(unsigned int argCount, int errorHandler) { return Run(argCount, LUA_MULTRET, errorHandler); } - bool LuaState::CallWithHandler(int errorHandler, unsigned int argCount, unsigned int resultCount) + bool LuaState::CallWithHandler(unsigned int argCount, unsigned int resultCount, int errorHandler) { return Run(argCount, resultCount, errorHandler); } From b782fd8431a75924fd365d0a83c13ecde9239525 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 27 May 2018 14:15:29 +0200 Subject: [PATCH 043/194] Graphics/Model: add ModelLibrary, ModelManager, ModelSaver --- ChangeLog.md | 1 + include/Nazara/Graphics/Model.hpp | 12 ++++++++++++ src/Nazara/Graphics/Model.cpp | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 7cd448e12..75e1a5ced 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -103,6 +103,7 @@ Nazara Engine: - Added operator&/|/^ taking an enumeration value and a Flags object using the same enumeration type. - Added LuaState::CallWithHandler methods, allowing to setup a error handler function - Added LuaState::Traceback method +- Added ModelLibrary, ModelManager and ModelSaver Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Graphics/Model.hpp b/include/Nazara/Graphics/Model.hpp index dfdcc8ee2..072494edf 100644 --- a/include/Nazara/Graphics/Model.hpp +++ b/include/Nazara/Graphics/Model.hpp @@ -8,9 +8,11 @@ #define NAZARA_MODEL_HPP #include +#include #include #include #include +#include #include #include #include @@ -32,12 +34,18 @@ namespace Nz class Model; using ModelConstRef = ObjectRef; + using ModelLibrary = ObjectLibrary; using ModelLoader = ResourceLoader; + using ModelManager = ResourceManager; using ModelRef = ObjectRef; + using ModelSaver = ResourceSaver; class NAZARA_GRAPHICS_API Model : public InstancedRenderable, public Resource { + friend ModelLibrary; friend ModelLoader; + friend ModelManager; + friend ModelSaver; public: inline Model(); @@ -77,7 +85,11 @@ namespace Nz NazaraSlot(Mesh, OnMeshInvalidateAABB, m_meshAABBInvalidationSlot); + static ModelLibrary::LibraryMap s_library; static ModelLoader::LoaderList s_loaders; + static ModelManager::ManagerMap s_managerMap; + static ModelManager::ManagerParams s_managerParameters; + static ModelSaver::SaverList s_savers; }; } diff --git a/src/Nazara/Graphics/Model.cpp b/src/Nazara/Graphics/Model.cpp index a01199d32..00c347b8a 100644 --- a/src/Nazara/Graphics/Model.cpp +++ b/src/Nazara/Graphics/Model.cpp @@ -277,5 +277,9 @@ namespace Nz m_boundingVolume.MakeNull(); } + ModelLibrary::LibraryMap Model::s_library; ModelLoader::LoaderList Model::s_loaders; + ModelManager::ManagerMap Model::s_managerMap; + ModelManager::ManagerParams Model::s_managerParameters; + ModelSaver::SaverList Model::s_savers; } From af34567ae71e1a285f8065f787fa00a4feb482de Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 27 May 2018 21:45:06 +0200 Subject: [PATCH 044/194] Graphics/AbstractViewer: Add Project/Unproject methods --- ChangeLog.md | 3 +- include/Nazara/Graphics/AbstractViewer.hpp | 3 ++ src/Nazara/Graphics/AbstractViewer.cpp | 36 ++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index 75e1a5ced..98b92b55b 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -20,7 +20,7 @@ Miscellaneous: Nazara Engine: - VertexMapper:GetComponentPtr no longer throw an error if component is disabled or incompatible with template type, instead a null pointer is returned. -- Bitset swap operation is now correctly marked as noexcept` +- Bitset swap operation is now correctly marked as noexcept - Mesh loaders now takes MeshParams vertexDeclaration into account - ⚠️ Replaced RenderTarget::Get[Height|Width] by RenderTarget::GetSize - ⚠️ Removed Window::Get[Height|Width] methods @@ -104,6 +104,7 @@ Nazara Engine: - Added LuaState::CallWithHandler methods, allowing to setup a error handler function - Added LuaState::Traceback method - Added ModelLibrary, ModelManager and ModelSaver +- Added AbstractViewer::Project and AbstractViewer::Unproject methods Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Graphics/AbstractViewer.hpp b/include/Nazara/Graphics/AbstractViewer.hpp index 2821fdbec..c682deeb2 100644 --- a/include/Nazara/Graphics/AbstractViewer.hpp +++ b/include/Nazara/Graphics/AbstractViewer.hpp @@ -40,6 +40,9 @@ namespace Nz virtual float GetZFar() const = 0; virtual float GetZNear() const = 0; + Nz::Vector3f Project(const Nz::Vector3f& worldPosition) const; + Nz::Vector3f Unproject(const Nz::Vector3f& screenPos) const; + AbstractViewer& operator=(const AbstractViewer&) = default; AbstractViewer& operator=(AbstractViewer&&) noexcept = default; }; diff --git a/src/Nazara/Graphics/AbstractViewer.cpp b/src/Nazara/Graphics/AbstractViewer.cpp index e83737baa..ed9176e76 100644 --- a/src/Nazara/Graphics/AbstractViewer.cpp +++ b/src/Nazara/Graphics/AbstractViewer.cpp @@ -3,6 +3,7 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include +#include #include namespace Nz @@ -16,4 +17,39 @@ namespace Nz */ AbstractViewer::~AbstractViewer() = default; + + Vector3f AbstractViewer::Project(const Nz::Vector3f& worldPosition) const + { + Vector4f pos4D(worldPosition, 1.f); + pos4D = GetViewMatrix() * pos4D; + pos4D = GetProjectionMatrix() * pos4D; + pos4D /= pos4D.w; + + Rectf viewport = Rectf(GetViewport()); + + Nz::Vector3f screenPosition(pos4D.x * 0.5f + 0.5f, -pos4D.y * 0.5f + 0.5f, pos4D.z * 0.5f + 0.5f); + screenPosition.x = screenPosition.x * viewport.width + viewport.x; + screenPosition.y = screenPosition.y * viewport.height + viewport.y; + + return screenPosition; + } + + Vector3f AbstractViewer::Unproject(const Nz::Vector3f& screenPos) const + { + Rectf viewport = Rectf(GetViewport()); + + Nz::Vector4f normalizedPosition; + normalizedPosition.x = (screenPos.x - viewport.x) / viewport.width * 2.f - 1.f; + normalizedPosition.y = (screenPos.y - viewport.y) / viewport.height * 2.f - 1.f; + normalizedPosition.z = screenPos.z * 2.f - 1.f; + normalizedPosition.w = 1.f; + + Nz::Matrix4f invMatrix = GetViewMatrix() * GetProjectionMatrix(); + invMatrix.Inverse(); + + Nz::Vector4f worldPos = invMatrix * normalizedPosition; + worldPos /= worldPos.w; + + return Nz::Vector3f(worldPos.x, worldPos.y, worldPos.z); + } } From e46aa6772e1e4a605c0feea89c12b0d27c5869a4 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 29 May 2018 21:05:03 +0200 Subject: [PATCH 045/194] Graphics/AbstractViewer: Fix Unproject code --- src/Nazara/Graphics/AbstractViewer.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Nazara/Graphics/AbstractViewer.cpp b/src/Nazara/Graphics/AbstractViewer.cpp index ed9176e76..2e5eb6b47 100644 --- a/src/Nazara/Graphics/AbstractViewer.cpp +++ b/src/Nazara/Graphics/AbstractViewer.cpp @@ -44,6 +44,8 @@ namespace Nz normalizedPosition.z = screenPos.z * 2.f - 1.f; normalizedPosition.w = 1.f; + normalizedPosition.y = -normalizedPosition.y; + Nz::Matrix4f invMatrix = GetViewMatrix() * GetProjectionMatrix(); invMatrix.Inverse(); From db0e3267dad0d3b144b6e16e93110a964bfee7ff Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 29 May 2018 23:55:51 +0200 Subject: [PATCH 046/194] Graphics/AbstractViewer: Add ProjectDepth method --- ChangeLog.md | 1 + include/Nazara/Graphics/AbstractViewer.hpp | 2 ++ src/Nazara/Graphics/AbstractViewer.cpp | 9 +++++++++ 3 files changed, 12 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 98b92b55b..46704fd5d 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -105,6 +105,7 @@ Nazara Engine: - Added LuaState::Traceback method - Added ModelLibrary, ModelManager and ModelSaver - Added AbstractViewer::Project and AbstractViewer::Unproject methods +- Added AbstractViewer::ProjectDepth method Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Graphics/AbstractViewer.hpp b/include/Nazara/Graphics/AbstractViewer.hpp index c682deeb2..36547b1ec 100644 --- a/include/Nazara/Graphics/AbstractViewer.hpp +++ b/include/Nazara/Graphics/AbstractViewer.hpp @@ -41,6 +41,8 @@ namespace Nz virtual float GetZNear() const = 0; Nz::Vector3f Project(const Nz::Vector3f& worldPosition) const; + float ProjectDepth(float depth); + Nz::Vector3f Unproject(const Nz::Vector3f& screenPos) const; AbstractViewer& operator=(const AbstractViewer&) = default; diff --git a/src/Nazara/Graphics/AbstractViewer.cpp b/src/Nazara/Graphics/AbstractViewer.cpp index 2e5eb6b47..e9d91c92c 100644 --- a/src/Nazara/Graphics/AbstractViewer.cpp +++ b/src/Nazara/Graphics/AbstractViewer.cpp @@ -34,6 +34,15 @@ namespace Nz return screenPosition; } + float AbstractViewer::ProjectDepth(float depth) + { + const Matrix4f& projectionMatrix = GetProjectionMatrix(); + float a = projectionMatrix(2, 2); + float b = projectionMatrix(2, 3); + + return (0.5f * (-a * depth + b) / depth + 0.5f); + } + Vector3f AbstractViewer::Unproject(const Nz::Vector3f& screenPos) const { Rectf viewport = Rectf(GetViewport()); From 33fb70b65b09ab1ea012232eb14b44c37cd1cac0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 31 May 2018 16:08:46 +0200 Subject: [PATCH 047/194] Network: Fix SocketPoller error handling --- ChangeLog.md | 1 + src/Nazara/Network/Posix/SocketPollerImpl.cpp | 10 +++++----- src/Nazara/Network/Win32/SocketPollerImpl.cpp | 10 +++++----- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 46704fd5d..0f68a9a8f 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -106,6 +106,7 @@ Nazara Engine: - Added ModelLibrary, ModelManager and ModelSaver - Added AbstractViewer::Project and AbstractViewer::Unproject methods - Added AbstractViewer::ProjectDepth method +- Fixed SocketPoller not be able to recover from some errors (like invalid sockets and such) Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Network/Posix/SocketPollerImpl.cpp b/src/Nazara/Network/Posix/SocketPollerImpl.cpp index 810427933..01cc9ffa9 100644 --- a/src/Nazara/Network/Posix/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Posix/SocketPollerImpl.cpp @@ -100,17 +100,17 @@ namespace Nz if (entry.revents & (POLLWRNORM | POLLERR)) m_readyToWriteSockets.insert(entry.fd); - - entry.revents = 0; - - if (--socketRemaining == 0) - break; } else { NazaraWarning("Socket " + String::Number(entry.fd) + " was returned by WSAPoll without POLLRDNORM nor POLLWRNORM events (events: 0x" + String::Number(entry.revents, 16) + ')'); activeSockets--; } + + entry.revents = 0; + + if (--socketRemaining == 0) + break; } } diff --git a/src/Nazara/Network/Win32/SocketPollerImpl.cpp b/src/Nazara/Network/Win32/SocketPollerImpl.cpp index 658e86c8e..5fa5ac5a2 100644 --- a/src/Nazara/Network/Win32/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Win32/SocketPollerImpl.cpp @@ -154,17 +154,17 @@ namespace Nz if (entry.revents & (POLLWRNORM | POLLERR)) m_readyToWriteSockets.insert(entry.fd); - - entry.revents = 0; - - if (--socketRemaining == 0) - break; } else { NazaraWarning("Socket " + String::Number(entry.fd) + " was returned by WSAPoll without POLLRDNORM nor POLLWRNORM events (events: 0x" + String::Number(entry.revents, 16) + ')'); activeSockets--; } + + entry.revents = 0; + + if (--socketRemaining == 0) + break; } } #else From 550176e19814a99da9da431e33a413c822bc93fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 31 May 2018 16:10:58 +0200 Subject: [PATCH 048/194] Core/SerializationContext: Replaced currentBitPos and currentByte by [read|write][BitPos][Byte] to handle properly bit reading/writing --- ChangeLog.md | 1 + include/Nazara/Core/Algorithm.inl | 24 ++++++++++---------- include/Nazara/Core/SerializationContext.hpp | 9 +++++--- include/Nazara/Core/SerializationContext.inl | 18 +++++++++++---- src/Nazara/Core/SerializationContext.cpp | 8 +++---- 5 files changed, 36 insertions(+), 24 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 0f68a9a8f..2e2c30d59 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -107,6 +107,7 @@ Nazara Engine: - Added AbstractViewer::Project and AbstractViewer::Unproject methods - Added AbstractViewer::ProjectDepth method - Fixed SocketPoller not be able to recover from some errors (like invalid sockets and such) +- ⚠️ Replaced currentBitPos and currentByte fields by [read|write][BitPos][Byte] to handle properly bit reading/writing. Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Core/Algorithm.inl b/include/Nazara/Core/Algorithm.inl index 969c07bdd..f21b0c36a 100644 --- a/include/Nazara/Core/Algorithm.inl +++ b/include/Nazara/Core/Algorithm.inl @@ -219,17 +219,17 @@ namespace Nz */ inline bool Serialize(SerializationContext& context, bool value, TypeTag) { - if (context.currentBitPos == 8) + if (context.writeBitPos == 8) { - context.currentBitPos = 0; - context.currentByte = 0; + context.writeBitPos = 0; + context.writeByte = 0; } if (value) - context.currentByte |= 1 << context.currentBitPos; + context.writeByte |= 1 << context.writeBitPos; - if (++context.currentBitPos >= 8) - return Serialize(context, context.currentByte, TypeTag()); + if (++context.writeBitPos >= 8) + return Serialize(context, context.writeByte, TypeTag()); else return true; } @@ -291,18 +291,18 @@ namespace Nz */ inline bool Unserialize(SerializationContext& context, bool* value, TypeTag) { - if (context.currentBitPos == 8) + if (context.readBitPos == 8) { - if (!Unserialize(context, &context.currentByte, TypeTag())) + if (!Unserialize(context, &context.readByte, TypeTag())) return false; - context.currentBitPos = 0; + context.readBitPos = 0; } if (value) - *value = (context.currentByte & (1 << context.currentBitPos)) != 0; + *value = (context.readByte & (1 << context.readBitPos)) != 0; - context.currentBitPos++; + context.readBitPos++; return true; } @@ -341,7 +341,7 @@ namespace Nz { NazaraAssert(value, "Invalid data pointer"); - context.ResetBitPosition(); + context.ResetReadBitPosition(); if (context.stream->Read(value, sizeof(T)) == sizeof(T)) { diff --git a/include/Nazara/Core/SerializationContext.hpp b/include/Nazara/Core/SerializationContext.hpp index 94951666d..4111f7a7b 100644 --- a/include/Nazara/Core/SerializationContext.hpp +++ b/include/Nazara/Core/SerializationContext.hpp @@ -20,11 +20,14 @@ namespace Nz { Stream* stream; Endianness endianness = Endianness_BigEndian; //< Default to Big Endian encoding - UInt8 currentBitPos = 8; //< 8 means no bit is currently wrote - UInt8 currentByte; //< Undefined value, will be initialized at the first bit write + UInt8 readBitPos = 8; //< 8 means no bit is currently read + UInt8 readByte; //< Undefined value, will be initialized at the first bit read + UInt8 writeBitPos = 8; //< 8 means no bit is currently wrote + UInt8 writeByte; //< Undefined value, will be initialized at the first bit write void FlushBits(); - inline void ResetBitPosition(); + inline void ResetReadBitPosition(); + inline void ResetWriteBitPosition(); }; } diff --git a/include/Nazara/Core/SerializationContext.inl b/include/Nazara/Core/SerializationContext.inl index 870972655..4379f718d 100644 --- a/include/Nazara/Core/SerializationContext.inl +++ b/include/Nazara/Core/SerializationContext.inl @@ -7,16 +7,24 @@ namespace Nz { /*! - * \brief Reset the current bit cursor + * \brief Reset the current read bit cursor + */ + inline void SerializationContext::ResetReadBitPosition() + { + readBitPos = 8; + } + + /*! + * \brief Reset the current read bit cursor * \remark This function only reset the cursor position, it doesn't do any writing - if you wish to write all bits and reset bit position, call FlushBits + if you wish to write all bits and reset bit position, call FlushBits - \see FlushBits + \see FlushBits */ - inline void SerializationContext::ResetBitPosition() + inline void SerializationContext::ResetWriteBitPosition() { - currentBitPos = 8; + writeBitPos = 8; } } diff --git a/src/Nazara/Core/SerializationContext.cpp b/src/Nazara/Core/SerializationContext.cpp index 5949281e3..cf9711bea 100644 --- a/src/Nazara/Core/SerializationContext.cpp +++ b/src/Nazara/Core/SerializationContext.cpp @@ -19,16 +19,16 @@ namespace Nz /*! * Write bits to the stream (if any) and reset the current bit cursor - * \see ResetBitPosition + * \see ResetWriteBitPosition */ void SerializationContext::FlushBits() { - if (currentBitPos != 8) + if (writeBitPos != 8) { - ResetBitPosition(); + ResetWriteBitPosition(); // Serialize will reset the bit position - if (!Serialize(*this, currentByte)) + if (!Serialize(*this, writeByte)) NazaraWarning("Failed to flush bits"); } } From ba32d700e226bab34607e47fbd0104bc072471c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 31 May 2018 17:02:07 +0200 Subject: [PATCH 049/194] Fix compilation --- include/Nazara/Core/ByteStream.inl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/Nazara/Core/ByteStream.inl b/include/Nazara/Core/ByteStream.inl index 0b32215e7..afd9f1fd3 100644 --- a/include/Nazara/Core/ByteStream.inl +++ b/include/Nazara/Core/ByteStream.inl @@ -86,11 +86,11 @@ namespace Nz if (!m_context.stream) return true; - if (m_context.currentBitPos != 8) + if (m_context.writeBitPos != 8) { - m_context.currentBitPos = 8; //< To prevent Serialize to flush bits itself + m_context.writeBitPos = 8; //< To prevent Serialize to flush bits itself - if (!Serialize(m_context, m_context.currentByte)) + if (!Serialize(m_context, m_context.writeByte)) return false; } From f5645833dfc8431118f8dbec32253aa06fb2f789 Mon Sep 17 00:00:00 2001 From: S6066 Date: Wed, 6 Jun 2018 00:25:59 +0200 Subject: [PATCH 050/194] Fix unwanted behavior with universal references (#165) * Remove forced template * Remove useless PushInstance overload --- include/Nazara/Lua/LuaState.hpp | 1 - include/Nazara/Lua/LuaState.inl | 13 ++----------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/include/Nazara/Lua/LuaState.hpp b/include/Nazara/Lua/LuaState.hpp index 67640925a..47c6d07cf 100644 --- a/include/Nazara/Lua/LuaState.hpp +++ b/include/Nazara/Lua/LuaState.hpp @@ -141,7 +141,6 @@ namespace Nz template void PushFunction(R(*func)(Args...), DefArgs&&... defArgs) const; template void PushGlobal(const char* name, T&& arg); template void PushGlobal(const String& name, T&& arg); - template void PushInstance(const char* tname, const T& instance) const; template void PushInstance(const char* tname, T&& instance) const; template void PushInstance(const char* tname, Args&&... args) const; void PushInteger(long long value) const; diff --git a/include/Nazara/Lua/LuaState.inl b/include/Nazara/Lua/LuaState.inl index 62669d72b..7dcc4e36f 100644 --- a/include/Nazara/Lua/LuaState.inl +++ b/include/Nazara/Lua/LuaState.inl @@ -706,7 +706,7 @@ namespace Nz template void LuaState::PushField(const char* name, T&& arg, int tableIndex) const { - Push(std::forward(arg)); + Push(std::forward(arg)); SetField(name, tableIndex); } @@ -732,7 +732,7 @@ namespace Nz template void LuaState::PushGlobal(const char* name, T&& arg) { - Push(std::forward(arg)); + Push(std::forward(arg)); SetGlobal(name); } @@ -742,15 +742,6 @@ namespace Nz PushGlobal(name.GetConstBuffer(), std::forward(arg)); } - template - void LuaState::PushInstance(const char* tname, const T& instance) const - { - T* userdata = static_cast(PushUserdata(sizeof(T))); - PlacementNew(userdata, instance); - - SetMetatable(tname); - } - template void LuaState::PushInstance(const char* tname, T&& instance) const { From 2f0c62df20d022d1c30c606489effbe96a9caf19 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 6 Jun 2018 19:32:28 +0200 Subject: [PATCH 051/194] Graphics/InstancedRenderable: Make SetMaterial methods public --- ChangeLog.md | 1 + .../Nazara/Graphics/InstancedRenderable.hpp | 5 +- .../Nazara/Graphics/InstancedRenderable.inl | 90 +++++++++---------- 3 files changed, 48 insertions(+), 48 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 2e2c30d59..c85fe2fc5 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -108,6 +108,7 @@ Nazara Engine: - Added AbstractViewer::ProjectDepth method - Fixed SocketPoller not be able to recover from some errors (like invalid sockets and such) - ⚠️ Replaced currentBitPos and currentByte fields by [read|write][BitPos][Byte] to handle properly bit reading/writing. +- InstancedRenderable::SetMaterial methods are now public. Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Graphics/InstancedRenderable.hpp b/include/Nazara/Graphics/InstancedRenderable.hpp index 25f6064a8..9bd74bfea 100644 --- a/include/Nazara/Graphics/InstancedRenderable.hpp +++ b/include/Nazara/Graphics/InstancedRenderable.hpp @@ -53,6 +53,8 @@ namespace Nz virtual void InvalidateData(InstanceData* instanceData, UInt32 flags) const; + inline void SetMaterial(std::size_t matIndex, MaterialRef material); + inline void SetMaterial(std::size_t skinIndex, std::size_t matIndex, MaterialRef material); inline void SetSkin(std::size_t skinIndex); inline void SetSkinCount(std::size_t skinCount); @@ -108,9 +110,6 @@ namespace Nz inline void ResetMaterials(std::size_t matCount, std::size_t skinCount = 1); - inline void SetMaterial(std::size_t matIndex, MaterialRef material); - inline void SetMaterial(std::size_t skinIndex, std::size_t matIndex, MaterialRef material); - mutable BoundingVolumef m_boundingVolume; private: diff --git a/include/Nazara/Graphics/InstancedRenderable.inl b/include/Nazara/Graphics/InstancedRenderable.inl index c2a8f1b70..f54f9cebe 100644 --- a/include/Nazara/Graphics/InstancedRenderable.inl +++ b/include/Nazara/Graphics/InstancedRenderable.inl @@ -110,6 +110,51 @@ namespace Nz return m_skinCount; } + /*! + * \brief Changes the material used at the specified index by another one + * + * This function changes the active material at the specified index, depending on the current active skin, to the one passed as parameter. + * + * \param matIndex Material index + * \param material New material, cannot be null + * + * \remark If you wish to reset the material to the default one, use the default material (see Material::GetDefault) + * + * \see SetMaterial + */ + inline void InstancedRenderable::SetMaterial(std::size_t matIndex, MaterialRef material) + { + SetMaterial(m_skin, matIndex, std::move(material)); + } + + /*! + * \brief Changes the material used at the specified index by another one, independently from the active skin. + * + * This function changes the active material at the specified index and for the specified skin index, to the one passed as parameter. + * + * \param skinIndex Skin index + * \param matIndex Material index + * \param material New material, cannot be null + * + * \remark If you wish to reset the material to the default one, use the default material (see Material::GetDefault) + * + * \see SetMaterial + */ + inline void InstancedRenderable::SetMaterial(std::size_t skinIndex, std::size_t matIndex, MaterialRef material) + { + NazaraAssert(skinIndex < m_skinCount, "Skin index out of bounds"); + NazaraAssert(matIndex < m_materials.size(), "Material index out of bounds"); + NazaraAssert(material.IsValid(), "Material must be valid"); + + MaterialRef& matEntry = m_materials[m_matCount * skinIndex + matIndex]; + if (matEntry != material) + { + OnInstancedRenderableInvalidateMaterial(this, skinIndex, matIndex, material); + + matEntry = std::move(material); + } + } + /*! * \brief Changes the active skin * @@ -201,51 +246,6 @@ namespace Nz m_skin = 0; } - /*! - * \brief Changes the material used at the specified index by another one - * - * This function changes the active material at the specified index, depending on the current active skin, to the one passed as parameter. - * - * \param matIndex Material index - * \param material New material, cannot be null - * - * \remark If you wish to reset the material to the default one, use the default material (see Material::GetDefault) - * - * \see SetMaterial - */ - inline void InstancedRenderable::SetMaterial(std::size_t matIndex, MaterialRef material) - { - SetMaterial(m_skin, matIndex, std::move(material)); - } - - /*! - * \brief Changes the material used at the specified index by another one, independently from the active skin. - * - * This function changes the active material at the specified index and for the specified skin index, to the one passed as parameter. - * - * \param skinIndex Skin index - * \param matIndex Material index - * \param material New material, cannot be null - * - * \remark If you wish to reset the material to the default one, use the default material (see Material::GetDefault) - * - * \see SetMaterial - */ - inline void InstancedRenderable::SetMaterial(std::size_t skinIndex, std::size_t matIndex, MaterialRef material) - { - NazaraAssert(skinIndex < m_skinCount, "Skin index out of bounds"); - NazaraAssert(matIndex < m_materials.size(), "Material index out of bounds"); - NazaraAssert(material.IsValid(), "Material must be valid"); - - MaterialRef& matEntry = m_materials[m_matCount * skinIndex + matIndex]; - if (matEntry != material) - { - OnInstancedRenderableInvalidateMaterial(this, skinIndex, matIndex, material); - - matEntry = std::move(material); - } - } - /*! * \brief Sets the current instanced renderable with the content of the other one * \return A reference to this From bc2f6f67ccbc9a504bc1b57d9ece98df1a02b63a Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 6 Jun 2018 19:36:46 +0200 Subject: [PATCH 052/194] Graphics/InstancedRenderable: Add Clone method --- ChangeLog.md | 2 ++ SDK/src/NDK/Systems/DebugSystem.cpp | 10 ++++++++++ include/Nazara/Graphics/Billboard.hpp | 2 ++ include/Nazara/Graphics/InstancedRenderable.hpp | 2 ++ include/Nazara/Graphics/Model.hpp | 2 ++ include/Nazara/Graphics/Model.inl | 3 ++- include/Nazara/Graphics/SkeletalModel.hpp | 2 +- include/Nazara/Graphics/Sprite.hpp | 2 ++ include/Nazara/Graphics/TextSprite.hpp | 3 +++ include/Nazara/Graphics/TileMap.hpp | 2 ++ src/Nazara/Graphics/Billboard.cpp | 8 ++++++++ src/Nazara/Graphics/Model.cpp | 9 ++++++++- src/Nazara/Graphics/SkeletalModel.cpp | 5 ++--- src/Nazara/Graphics/Sprite.cpp | 10 ++++++++-- src/Nazara/Graphics/TextSprite.cpp | 8 ++++++++ src/Nazara/Graphics/TileMap.cpp | 8 ++++++++ 16 files changed, 70 insertions(+), 8 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index c85fe2fc5..d753cd450 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -109,6 +109,8 @@ Nazara Engine: - Fixed SocketPoller not be able to recover from some errors (like invalid sockets and such) - ⚠️ Replaced currentBitPos and currentByte fields by [read|write][BitPos][Byte] to handle properly bit reading/writing. - InstancedRenderable::SetMaterial methods are now public. +- Fixed Model copy constructor not copying materials +- ⚠️ Added InstancedRenderable::Clone() method Nazara Development Kit: - Added ImageWidget (#139) diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 182191f7d..0da17c352 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -70,6 +70,11 @@ namespace Ndk renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); } + + std::unique_ptr Clone() const override + { + return nullptr; + } }; class OBBDebugRenderable : public DebugRenderable @@ -94,6 +99,11 @@ namespace Ndk renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); } + + std::unique_ptr Clone() const override + { + return nullptr; + } }; } diff --git a/include/Nazara/Graphics/Billboard.hpp b/include/Nazara/Graphics/Billboard.hpp index 62f872f39..f875bc23e 100644 --- a/include/Nazara/Graphics/Billboard.hpp +++ b/include/Nazara/Graphics/Billboard.hpp @@ -31,6 +31,8 @@ namespace Nz void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override; + std::unique_ptr Clone() const override; + inline const Color& GetColor() const; inline float GetRotation() const; inline const Vector2f& GetSize() const; diff --git a/include/Nazara/Graphics/InstancedRenderable.hpp b/include/Nazara/Graphics/InstancedRenderable.hpp index 9bd74bfea..9ec0d973f 100644 --- a/include/Nazara/Graphics/InstancedRenderable.hpp +++ b/include/Nazara/Graphics/InstancedRenderable.hpp @@ -39,6 +39,8 @@ namespace Nz virtual void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const = 0; + virtual std::unique_ptr Clone() const = 0; + virtual bool Cull(const Frustumf& frustum, const InstanceData& instanceData) const; inline void EnsureBoundingVolumeUpdated() const; diff --git a/include/Nazara/Graphics/Model.hpp b/include/Nazara/Graphics/Model.hpp index 072494edf..dd2258e26 100644 --- a/include/Nazara/Graphics/Model.hpp +++ b/include/Nazara/Graphics/Model.hpp @@ -56,6 +56,8 @@ namespace Nz void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override; inline void AddToRenderQueue(AbstractRenderQueue* renderQueue, const Matrix4f& transformMatrix, int renderOrder = 0, const Recti& scissorRect = Recti(-1, -1, -1, -1)) const; + std::unique_ptr Clone() const override; + using InstancedRenderable::GetMaterial; const MaterialRef& GetMaterial(const String& subMeshName) const; const MaterialRef& GetMaterial(std::size_t skinIndex, const String& subMeshName) const; diff --git a/include/Nazara/Graphics/Model.inl b/include/Nazara/Graphics/Model.inl index 9078b6de3..1b0055cf3 100644 --- a/include/Nazara/Graphics/Model.inl +++ b/include/Nazara/Graphics/Model.inl @@ -21,7 +21,8 @@ namespace Nz * * \param model Model to copy */ - inline Model::Model(const Model& model) + inline Model::Model(const Model& model) : + InstancedRenderable(model) { SetMesh(model.m_mesh); } diff --git a/include/Nazara/Graphics/SkeletalModel.hpp b/include/Nazara/Graphics/SkeletalModel.hpp index 86943b676..a36082619 100644 --- a/include/Nazara/Graphics/SkeletalModel.hpp +++ b/include/Nazara/Graphics/SkeletalModel.hpp @@ -41,7 +41,7 @@ namespace Nz void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override; void AdvanceAnimation(float elapsedTime); - SkeletalModel* Clone() const; + std::unique_ptr Clone() const override; SkeletalModel* Create() const; void EnableAnimation(bool animation); diff --git a/include/Nazara/Graphics/Sprite.hpp b/include/Nazara/Graphics/Sprite.hpp index bf9edc0d1..6548f461a 100644 --- a/include/Nazara/Graphics/Sprite.hpp +++ b/include/Nazara/Graphics/Sprite.hpp @@ -35,6 +35,8 @@ namespace Nz void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override; + std::unique_ptr Clone() const override; + inline const Color& GetColor() const; inline const Color& GetCornerColor(RectCorner corner) const; inline const Vector3f& GetOrigin() const; diff --git a/include/Nazara/Graphics/TextSprite.hpp b/include/Nazara/Graphics/TextSprite.hpp index 355d17fe4..d86d999ad 100644 --- a/include/Nazara/Graphics/TextSprite.hpp +++ b/include/Nazara/Graphics/TextSprite.hpp @@ -34,11 +34,14 @@ namespace Nz inline void Clear(); + std::unique_ptr Clone() const override; + inline const Color& GetColor() const; inline float GetScale() const; inline void SetColor(const Color& color); inline void SetDefaultMaterial(); + using InstancedRenderable::SetMaterial; inline void SetMaterial(MaterialRef material); inline void SetMaterial(std::size_t skinIndex, MaterialRef material); inline void SetScale(float scale); diff --git a/include/Nazara/Graphics/TileMap.hpp b/include/Nazara/Graphics/TileMap.hpp index 3692eb3c2..6648a6598 100644 --- a/include/Nazara/Graphics/TileMap.hpp +++ b/include/Nazara/Graphics/TileMap.hpp @@ -35,6 +35,8 @@ namespace Nz void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const override; + std::unique_ptr Clone() const override; + inline void DisableTile(const Vector2ui& tilePos); inline void DisableTiles(); inline void DisableTiles(const Vector2ui* tilesPos, std::size_t tileCount); diff --git a/src/Nazara/Graphics/Billboard.cpp b/src/Nazara/Graphics/Billboard.cpp index 9cc79acce..35021ef8d 100644 --- a/src/Nazara/Graphics/Billboard.cpp +++ b/src/Nazara/Graphics/Billboard.cpp @@ -27,6 +27,14 @@ namespace Nz renderQueue->AddBillboards(instanceData.renderOrder, GetMaterial(), 1, scissorRect, &position, &m_size, &m_sinCos, &m_color); } + /*! + * \brief Clones this billboard + */ + std::unique_ptr Billboard::Clone() const + { + return std::make_unique(*this); + } + /* * \brief Makes the bounding volume of this billboard */ diff --git a/src/Nazara/Graphics/Model.cpp b/src/Nazara/Graphics/Model.cpp index 00c347b8a..b725caef8 100644 --- a/src/Nazara/Graphics/Model.cpp +++ b/src/Nazara/Graphics/Model.cpp @@ -51,7 +51,6 @@ namespace Nz * \param renderQueue Queue to be added * \param instanceData Data used for this instance */ - void Model::AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const { unsigned int submeshCount = m_mesh->GetSubMeshCount(); @@ -69,6 +68,14 @@ namespace Nz } } + /*! + * \brief Clones this model + */ + std::unique_ptr Model::Clone() const + { + return std::make_unique(*this); + } + /*! * \brief Gets the material of the named submesh * \return Pointer to the current material diff --git a/src/Nazara/Graphics/SkeletalModel.cpp b/src/Nazara/Graphics/SkeletalModel.cpp index c42b63a83..03d22f648 100644 --- a/src/Nazara/Graphics/SkeletalModel.cpp +++ b/src/Nazara/Graphics/SkeletalModel.cpp @@ -126,10 +126,9 @@ namespace Nz * \brief Clones this skeletal model * \return Pointer to newly allocated SkeletalModel */ - - SkeletalModel* SkeletalModel::Clone() const + std::unique_ptr SkeletalModel::Clone() const { - return new SkeletalModel(*this); + return std::make_unique(*this); } /*! diff --git a/src/Nazara/Graphics/Sprite.cpp b/src/Nazara/Graphics/Sprite.cpp index 70ba21926..0c16de174 100644 --- a/src/Nazara/Graphics/Sprite.cpp +++ b/src/Nazara/Graphics/Sprite.cpp @@ -21,17 +21,23 @@ namespace Nz * \param renderQueue Queue to be added * \param instanceData Data for the instance */ - void Sprite::AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Recti& scissorRect) const { const VertexStruct_XYZ_Color_UV* vertices = reinterpret_cast(instanceData.data.data()); renderQueue->AddSprites(instanceData.renderOrder, GetMaterial(), vertices, 1, scissorRect); } + /*! + * \brief Clones this sprite + */ + std::unique_ptr Sprite::Clone() const + { + return std::make_unique(*this); + } + /*! * \brief Makes the bounding volume of this text */ - void Sprite::MakeBoundingVolume() const { Vector3f origin(m_origin.x, -m_origin.y, m_origin.z); diff --git a/src/Nazara/Graphics/TextSprite.cpp b/src/Nazara/Graphics/TextSprite.cpp index 883268963..8cc4961cf 100644 --- a/src/Nazara/Graphics/TextSprite.cpp +++ b/src/Nazara/Graphics/TextSprite.cpp @@ -41,6 +41,14 @@ namespace Nz } } + /*! + * \brief Clones this text sprite + */ + std::unique_ptr TextSprite::Clone() const + { + return std::make_unique(*this); + } + /*! * \brief Updates the text * diff --git a/src/Nazara/Graphics/TileMap.cpp b/src/Nazara/Graphics/TileMap.cpp index 26a146f88..6a30496c3 100644 --- a/src/Nazara/Graphics/TileMap.cpp +++ b/src/Nazara/Graphics/TileMap.cpp @@ -37,6 +37,14 @@ namespace Nz } } + /*! + * \brief Clones this tilemap + */ + std::unique_ptr TileMap::Clone() const + { + return std::make_unique(*this); + } + void TileMap::MakeBoundingVolume() const { Nz::Vector2f size = GetSize(); From 056bd0efdd47794a6ed6f9b1428f300dcd69bbff Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 6 Jun 2018 19:37:58 +0200 Subject: [PATCH 053/194] SDK/GraphicsComponent: Add ForEachRenderable method --- ChangeLog.md | 1 + SDK/include/NDK/Components/GraphicsComponent.hpp | 2 ++ SDK/include/NDK/Components/GraphicsComponent.inl | 12 ++++++++++++ 3 files changed, 15 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index d753cd450..dbf4dfa24 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -159,6 +159,7 @@ Nazara Development Kit: - ⚠️ TextAreaWidget::GetHoveredGlyph now returns a two-dimensional position instead of a single glyph position - Fixed Entity::OnEntityDestruction signal not being properly moved and thus not being called. - Fixed EntityOwner move assignment which was losing entity ownership +- Add GraphicsComponent:ForEachRenderable method # 0.4: diff --git a/SDK/include/NDK/Components/GraphicsComponent.hpp b/SDK/include/NDK/Components/GraphicsComponent.hpp index e5dce0144..896e17c09 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.hpp +++ b/SDK/include/NDK/Components/GraphicsComponent.hpp @@ -44,6 +44,8 @@ namespace Ndk inline bool DoesRequireRealTimeReflections() const; + template void ForEachRenderable(const Func& func) const; + inline void EnsureBoundingVolumeUpdate() const; inline void EnsureTransformMatrixUpdate() const; diff --git a/SDK/include/NDK/Components/GraphicsComponent.inl b/SDK/include/NDK/Components/GraphicsComponent.inl index 71b62f367..55e9706fb 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -107,6 +107,18 @@ namespace Ndk return m_reflectiveMaterialCount != 0 && m_reflectionMap; } + /*! + * \brief Calls a function for every renderable attached to this component + * + * \param func Callback function which will be called with renderable data + */ + template + void GraphicsComponent::ForEachRenderable(const Func& func) const + { + for (const auto& renderableData : m_renderables) + func(renderableData.renderable, renderableData.data.localMatrix, renderableData.data.renderOrder); + } + /*! * \brief Ensures the bounding volume is up to date */ From e9f0bdeb2534f35e2d8ab4b18d7ce470ac8fd894 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 6 Jun 2018 21:38:40 +0200 Subject: [PATCH 054/194] Graphics/ForwardRenderTechnique: Optimize sprite rendering --- .../Graphics/ForwardRenderTechnique.hpp | 10 +- .../Graphics/ForwardRenderTechnique.cpp | 175 ++++++++---------- 2 files changed, 90 insertions(+), 95 deletions(-) diff --git a/include/Nazara/Graphics/ForwardRenderTechnique.hpp b/include/Nazara/Graphics/ForwardRenderTechnique.hpp index 640986e62..f041e1246 100644 --- a/include/Nazara/Graphics/ForwardRenderTechnique.hpp +++ b/include/Nazara/Graphics/ForwardRenderTechnique.hpp @@ -83,9 +83,17 @@ namespace Nz int textureOverlay; }; + struct SpriteBatch + { + std::size_t spriteCount; + const Material* material; + const Texture* overlayTexture; + Recti scissorRect; + }; + mutable std::unordered_map m_shaderUniforms; mutable std::vector m_lights; - mutable std::vector> m_spriteChains; + mutable std::vector m_spriteBatches; Buffer m_vertexBuffer; mutable BasicRenderQueue m_renderQueue; TextureRef m_whiteCubemap; diff --git a/src/Nazara/Graphics/ForwardRenderTechnique.cpp b/src/Nazara/Graphics/ForwardRenderTechnique.cpp index cf3611362..934d54d6d 100644 --- a/src/Nazara/Graphics/ForwardRenderTechnique.cpp +++ b/src/Nazara/Graphics/ForwardRenderTechnique.cpp @@ -618,61 +618,51 @@ namespace Nz const RenderTarget* renderTarget = sceneData.viewer->GetTarget(); Recti fullscreenScissorRect = Recti(Vector2i(renderTarget->GetSize())); - Renderer::SetIndexBuffer(&s_quadIndexBuffer); - Renderer::SetMatrix(MatrixType_World, Matrix4f::Identity()); - Renderer::SetVertexBuffer(&m_spriteBuffer); - const unsigned int overlayTextureUnit = Material::GetTextureUnit(TextureMap_Overlay); const std::size_t maxSpriteCount = std::min(s_maxQuads, m_spriteBuffer.GetVertexCount() / 4); - m_spriteChains.clear(); - - auto Commit = [&]() + m_spriteBatches.clear(); { - std::size_t spriteChainCount = m_spriteChains.size(); - if (spriteChainCount > 0) + BufferMapper vertexMapper(m_spriteBuffer, BufferAccess_DiscardAndWrite); + VertexStruct_XYZ_Color_UV* vertices = static_cast(vertexMapper.GetPointer()); + + std::size_t remainingSprite = maxSpriteCount; + + const Material* lastMaterial = nullptr; + const Texture* lastOverlay = nullptr; + Recti lastScissorRect = Recti(-1, -1); + + for (const BasicRenderQueue::SpriteChain& basicSprites : spriteList) { - std::size_t spriteChain = 0; // Which chain of sprites are we treating - std::size_t spriteChainOffset = 0; // Where was the last offset where we stopped in the last chain - - do + const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get(); + const Nz::Recti& scissorRect = (basicSprites.scissorRect.width > 0) ? basicSprites.scissorRect : fullscreenScissorRect; + if (basicSprites.material != lastMaterial || overlayTexture != lastOverlay || (basicSprites.material->IsScissorTestEnabled() && scissorRect != lastScissorRect)) { - // We open the buffer in writing mode - BufferMapper vertexMapper(m_spriteBuffer, BufferAccess_DiscardAndWrite); - VertexStruct_XYZ_Color_UV* vertices = static_cast(vertexMapper.GetPointer()); + m_spriteBatches.emplace_back(); + SpriteBatch& newBatch = m_spriteBatches.back(); + newBatch.material = basicSprites.material; + newBatch.overlayTexture = overlayTexture; + newBatch.scissorRect = scissorRect; + newBatch.spriteCount = 0; - std::size_t spriteCount = 0; - - do - { - const VertexStruct_XYZ_Color_UV* currentChain = m_spriteChains[spriteChain].first; - std::size_t currentChainSpriteCount = m_spriteChains[spriteChain].second; - std::size_t count = std::min(maxSpriteCount - spriteCount, currentChainSpriteCount - spriteChainOffset); - - std::memcpy(vertices, currentChain + spriteChainOffset * 4, 4 * count * sizeof(VertexStruct_XYZ_Color_UV)); - vertices += count * 4; - - spriteCount += count; - spriteChainOffset += count; - - // Have we treated the entire chain ? - if (spriteChainOffset == currentChainSpriteCount) - { - spriteChain++; - spriteChainOffset = 0; - } - } - while (spriteCount < maxSpriteCount && spriteChain < spriteChainCount); - - vertexMapper.Unmap(); - - Renderer::DrawIndexedPrimitives(PrimitiveMode_TriangleList, 0, spriteCount * 6); + lastMaterial = basicSprites.material; + lastOverlay = overlayTexture; + lastScissorRect = scissorRect; } - while (spriteChain < spriteChainCount); - } - m_spriteChains.clear(); - }; + SpriteBatch& currentBatch = m_spriteBatches.back(); + + std::size_t spriteCount = std::min(remainingSprite, basicSprites.spriteCount); + std::memcpy(vertices, basicSprites.vertices, spriteCount * 4 * sizeof(VertexStruct_XYZ_Color_UV)); + vertices += spriteCount * 4; + + currentBatch.spriteCount += spriteCount; + + remainingSprite -= spriteCount; + if (remainingSprite == 0) + break; + } + } const Material* lastMaterial = nullptr; const MaterialPipeline* lastPipeline = nullptr; @@ -683,66 +673,63 @@ namespace Nz const MaterialPipeline::Instance* pipelineInstance = nullptr; - for (const BasicRenderQueue::SpriteChain& basicSprites : spriteList) + Renderer::SetIndexBuffer(&s_quadIndexBuffer); + Renderer::SetMatrix(MatrixType_World, Matrix4f::Identity()); + Renderer::SetVertexBuffer(&m_spriteBuffer); + + unsigned int firstIndex = 0; + for (const auto& batch : m_spriteBatches) { - const Nz::Recti& scissorRect = (basicSprites.scissorRect.width > 0) ? basicSprites.scissorRect : fullscreenScissorRect; - - if (basicSprites.material != lastMaterial || basicSprites.overlay != lastOverlay || (basicSprites.material->IsScissorTestEnabled() && scissorRect != lastScissorRect)) + const MaterialPipeline* pipeline = batch.material->GetPipeline(); + if (pipeline != lastPipeline) { - Commit(); + pipelineInstance = &batch.material->GetPipeline()->Apply(ShaderFlags_TextureOverlay | ShaderFlags_VertexColor); - const MaterialPipeline* pipeline = basicSprites.material->GetPipeline(); - if (lastPipeline != pipeline) + const Shader* shader = pipelineInstance->uberInstance->GetShader(); + if (shader != lastShader) { - pipelineInstance = &basicSprites.material->GetPipeline()->Apply(ShaderFlags_TextureOverlay | ShaderFlags_VertexColor); + // Index of uniforms in the shader + shaderUniforms = GetShaderUniforms(shader); - const Shader* shader = pipelineInstance->uberInstance->GetShader(); - if (shader != lastShader) - { - // Index of uniforms in the shader - shaderUniforms = GetShaderUniforms(shader); + // Ambient color of the scene + shader->SendColor(shaderUniforms->sceneAmbient, sceneData.ambientColor); + // Position of the camera + shader->SendVector(shaderUniforms->eyePosition, sceneData.viewer->GetEyePosition()); - // Ambient color of the scene - shader->SendColor(shaderUniforms->sceneAmbient, sceneData.ambientColor); - // Position of the camera - shader->SendVector(shaderUniforms->eyePosition, sceneData.viewer->GetEyePosition()); + // Overlay texture unit + shader->SendInteger(shaderUniforms->textureOverlay, overlayTextureUnit); - // Overlay texture unit - shader->SendInteger(shaderUniforms->textureOverlay, overlayTextureUnit); - - lastShader = shader; - } - - lastPipeline = pipeline; + lastShader = shader; } - if (lastMaterial != basicSprites.material) - { - basicSprites.material->Apply(*pipelineInstance); - - Renderer::SetTextureSampler(overlayTextureUnit, basicSprites.material->GetDiffuseSampler()); - - lastMaterial = basicSprites.material; - } - - const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get(); - if (overlayTexture != lastOverlay) - { - Renderer::SetTexture(overlayTextureUnit, overlayTexture); - lastOverlay = overlayTexture; - } - - if (basicSprites.material->IsScissorTestEnabled() && scissorRect != lastScissorRect) - { - Renderer::SetScissorRect(scissorRect); - lastScissorRect = scissorRect; - } + lastPipeline = pipeline; } - m_spriteChains.emplace_back(basicSprites.vertices, basicSprites.spriteCount); - } + if (batch.material != lastMaterial) + { + batch.material->Apply(*pipelineInstance); - Commit(); + Renderer::SetTextureSampler(overlayTextureUnit, batch.material->GetDiffuseSampler()); + + lastMaterial = batch.material; + } + + if (batch.overlayTexture != lastOverlay) + { + Renderer::SetTexture(overlayTextureUnit, batch.overlayTexture); + lastOverlay = batch.overlayTexture; + } + + if (batch.material->IsScissorTestEnabled() && batch.scissorRect != lastScissorRect) + { + Renderer::SetScissorRect(batch.scissorRect); + lastScissorRect = batch.scissorRect; + } + + unsigned int indexCount = batch.spriteCount * 6; + Renderer::DrawIndexedPrimitives(PrimitiveMode_TriangleList, firstIndex, indexCount); + firstIndex += indexCount; + } } const ForwardRenderTechnique::ShaderUniforms* ForwardRenderTechnique::GetShaderUniforms(const Shader* shader) const From 843e5545b6da7dba2f135be4ea5f05c490f3711e Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 6 Jun 2018 21:40:13 +0200 Subject: [PATCH 055/194] Graphics/BasicRenderQueue: Fix billboards not registering their layer --- src/Nazara/Graphics/BasicRenderQueue.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/Nazara/Graphics/BasicRenderQueue.cpp b/src/Nazara/Graphics/BasicRenderQueue.cpp index fb358d8a8..2068a21ff 100644 --- a/src/Nazara/Graphics/BasicRenderQueue.cpp +++ b/src/Nazara/Graphics/BasicRenderQueue.cpp @@ -36,6 +36,8 @@ namespace Nz { NazaraAssert(material, "Invalid material"); + RegisterLayer(renderOrder); + Vector2f defaultSinCos(0.f, 1.f); // sin(0) = 0, cos(0) = 1 if (!sinCosPtr) @@ -104,6 +106,8 @@ namespace Nz { NazaraAssert(material, "Invalid material"); + RegisterLayer(renderOrder); + Vector2f defaultSinCos(0.f, 1.f); // sin(0) = 0, cos(0) = 1 if (!sinCosPtr) @@ -174,6 +178,8 @@ namespace Nz { NazaraAssert(material, "Invalid material"); + RegisterLayer(renderOrder); + float defaultRotation = 0.f; if (!anglePtr) @@ -242,6 +248,8 @@ namespace Nz { NazaraAssert(material, "Invalid material"); + RegisterLayer(renderOrder); + float defaultRotation = 0.f; if (!anglePtr) @@ -312,6 +320,8 @@ namespace Nz { NazaraAssert(material, "Invalid material"); + RegisterLayer(renderOrder); + Vector2f defaultSinCos(0.f, 1.f); // sin(0) = 0, cos(0) = 1 if (!sinCosPtr) @@ -380,6 +390,8 @@ namespace Nz { NazaraAssert(material, "Invalid material"); + RegisterLayer(renderOrder); + Vector2f defaultSinCos(0.f, 1.f); // sin(0) = 0, cos(0) = 1 if (!sinCosPtr) @@ -450,6 +462,8 @@ namespace Nz { NazaraAssert(material, "Invalid material"); + RegisterLayer(renderOrder); + float defaultRotation = 0.f; if (!anglePtr) @@ -518,6 +532,8 @@ namespace Nz { NazaraAssert(material, "Invalid material"); + RegisterLayer(renderOrder); + float defaultRotation = 0.f; if (!anglePtr) From 0bea301a482b736e34b293ab59eb0cad59650793 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 9 Jun 2018 13:59:35 +0200 Subject: [PATCH 056/194] Fixed some uninitialized variables --- ChangeLog.md | 1 + SDK/include/NDK/Components/GraphicsComponent.hpp | 2 +- SDK/include/NDK/Components/GraphicsComponent.inl | 2 ++ include/Nazara/Utility/Mesh.inl | 3 ++- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index dbf4dfa24..9e20da937 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -160,6 +160,7 @@ Nazara Development Kit: - Fixed Entity::OnEntityDestruction signal not being properly moved and thus not being called. - Fixed EntityOwner move assignment which was losing entity ownership - Add GraphicsComponent:ForEachRenderable method +- Fixed GraphicsComponent reflective material count which was not initialized # 0.4: diff --git a/SDK/include/NDK/Components/GraphicsComponent.hpp b/SDK/include/NDK/Components/GraphicsComponent.hpp index 896e17c09..3e7b05def 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.hpp +++ b/SDK/include/NDK/Components/GraphicsComponent.hpp @@ -28,7 +28,7 @@ namespace Ndk public: using RenderableList = std::vector; - GraphicsComponent(); + inline GraphicsComponent(); inline GraphicsComponent(const GraphicsComponent& graphicsComponent); ~GraphicsComponent() = default; diff --git a/SDK/include/NDK/Components/GraphicsComponent.inl b/SDK/include/NDK/Components/GraphicsComponent.inl index 55e9706fb..adf653351 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -10,6 +10,7 @@ namespace Ndk { inline GraphicsComponent::GraphicsComponent() : + m_reflectiveMaterialCount(0), m_scissorRect(-1, -1) { } @@ -22,6 +23,7 @@ namespace Ndk inline GraphicsComponent::GraphicsComponent(const GraphicsComponent& graphicsComponent) : Component(graphicsComponent), HandledObject(graphicsComponent), + m_reflectiveMaterialCount(0), m_boundingVolume(graphicsComponent.m_boundingVolume), m_transformMatrix(graphicsComponent.m_transformMatrix), m_boundingVolumeUpdated(graphicsComponent.m_boundingVolumeUpdated), diff --git a/include/Nazara/Utility/Mesh.inl b/include/Nazara/Utility/Mesh.inl index 5dbe349d0..8913aa89c 100644 --- a/include/Nazara/Utility/Mesh.inl +++ b/include/Nazara/Utility/Mesh.inl @@ -10,7 +10,8 @@ namespace Nz { Mesh::Mesh() : m_materialData(1), - m_aabbUpdated(false) + m_aabbUpdated(false), + m_isValid(false) { } From 456f2b32e76617e6a737d4361e132d0c4cb4bda0 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 10 Jun 2018 15:49:11 +0200 Subject: [PATCH 057/194] Build: Fix install/executable paths --- build/scripts/common.lua | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/build/scripts/common.lua b/build/scripts/common.lua index 6eb1cfa64..5c1298fb1 100644 --- a/build/scripts/common.lua +++ b/build/scripts/common.lua @@ -4,12 +4,13 @@ NazaraBuild = {} local clangGccActions = "action:" .. table.concat({"codeblocks", "codelite", "gmake*", "xcode3", "xcode4"}, " or ") function NazaraBuild:AddExecutablePath(path) - table.insert(self.ExecutableDir, path) + self.ExecutableDir[path] = true + self:AddInstallPath(path) end function NazaraBuild:AddInstallPath(path) - table.insert(self.InstallDir, path) + self.InstallDir[path] = true end function NazaraBuild:FilterLibDirectory(prefix, func) @@ -613,9 +614,15 @@ function NazaraBuild:MakeInstallCommands(infoTable) postbuildmessage("Copying " .. infoTable.Name .. " library and its dependencies to install/executable directories...") -- Copy built file to install directory - for k,installPath in pairs(self.InstallDir) do + local installCommands = {} + for installPath,_ in pairs(self.InstallDir) do local destPath = path.translate(path.isabsolute(installPath) and installPath or "../../" .. installPath) - postbuildcommands({[[xcopy "%{path.translate(cfg.buildtarget.relpath)}" "]] .. destPath .. [[\" /E /Y]]}) + table.insert(installCommands, [[xcopy "%{path.translate(cfg.buildtarget.relpath)}" "]] .. destPath .. [[\" /E /Y]]) + end + table.sort(installCommands) + + for k,command in pairs(installCommands) do + postbuildcommands({command}) end -- Copy additional dependencies to executable directories too @@ -641,10 +648,17 @@ function NazaraBuild:MakeInstallCommands(infoTable) filter("architecture:" .. arch) - for k,execPath in pairs(self.ExecutableDir) do + local executableCommands = {} + for execPath,_ in pairs(self.ExecutableDir) do local srcPath = path.isabsolute(srcPath) and path.translate(srcPath) or [[%{path.translate(cfg.linktarget.relpath:sub(1, -#cfg.linktarget.name - 1) .. "../../]] .. srcPath .. [[")}]] local destPath = path.translate(path.isabsolute(execPath) and execPath or "../../" .. execPath) - postbuildcommands({[[xcopy "]] .. srcPath .. [[" "]] .. destPath .. [[\" /E /Y]]}) + table.insert(executableCommands, [[xcopy "]] .. srcPath .. [[" "]] .. destPath .. [[\" /E /Y]]) + end + + table.sort(executableCommands) + + for k,command in pairs(executableCommands) do + postbuildcommands({command}) end end end From 15f84dc712ca8ccc53fe62a899b8b1ccaf97a9eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 12 Jun 2018 11:37:44 +0200 Subject: [PATCH 058/194] Noexcept all the things! --- ChangeLog.md | 1 + SDK/include/NDK/BaseComponent.hpp | 4 +-- SDK/include/NDK/BaseWidget.hpp | 4 +-- SDK/include/NDK/System.hpp | 4 +-- SDK/include/NDK/Widgets/CheckboxWidget.hpp | 2 +- include/Nazara/Core/AbstractHash.hpp | 4 +-- include/Nazara/Core/ByteArray.hpp | 2 +- include/Nazara/Core/ByteStream.hpp | 4 +-- include/Nazara/Core/ByteStream.inl | 30 ------------------- include/Nazara/Core/CallOnExit.hpp | 4 +-- include/Nazara/Core/FileLogger.hpp | 4 +-- include/Nazara/Core/GuillotineBinPack.hpp | 4 +-- include/Nazara/Core/MemoryStream.hpp | 7 +++-- include/Nazara/Core/ParameterList.hpp | 4 ++- include/Nazara/Core/PrimitiveList.hpp | 4 +-- include/Nazara/Core/RefCounted.hpp | 4 +-- include/Nazara/Core/SerializationContext.hpp | 3 +- include/Nazara/Core/StdLogger.hpp | 4 +-- include/Nazara/Core/Stream.hpp | 4 +-- .../Nazara/Graphics/AbstractRenderQueue.hpp | 4 +-- .../Graphics/AbstractRenderTechnique.hpp | 4 +-- include/Nazara/Graphics/RenderQueue.hpp | 9 ++++-- include/Nazara/Graphics/Renderable.hpp | 4 +-- include/Nazara/Network/AbstractSocket.hpp | 2 +- include/Nazara/Network/ENetHost.hpp | 2 +- include/Nazara/Network/ENetPeer.hpp | 7 +++-- include/Nazara/Network/IpAddress.hpp | 4 +-- include/Nazara/Network/RUdpConnection.hpp | 2 +- include/Nazara/Network/TcpClient.hpp | 2 +- include/Nazara/Network/UdpSocket.hpp | 2 +- include/Nazara/Network/UdpSocket.inl | 2 +- include/Nazara/Physics3D/PhysWorld3D.hpp | 4 +-- include/Nazara/Platform/CursorController.hpp | 4 +-- include/Nazara/Platform/EventHandler.hpp | 4 +-- include/Nazara/Utility/Buffer.hpp | 4 +-- src/Nazara/Network/AbstractSocket.cpp | 4 +-- src/Nazara/Network/ENetHost.cpp | 2 +- 37 files changed, 72 insertions(+), 91 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 9e20da937..8f7b68007 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -111,6 +111,7 @@ Nazara Engine: - InstancedRenderable::SetMaterial methods are now public. - Fixed Model copy constructor not copying materials - ⚠️ Added InstancedRenderable::Clone() method +- Fixed a lot of classes not having their move constructor/assignation operator marked noexcept Nazara Development Kit: - Added ImageWidget (#139) diff --git a/SDK/include/NDK/BaseComponent.hpp b/SDK/include/NDK/BaseComponent.hpp index 013fe255f..3dd90bb75 100644 --- a/SDK/include/NDK/BaseComponent.hpp +++ b/SDK/include/NDK/BaseComponent.hpp @@ -23,7 +23,7 @@ namespace Ndk using Factory = std::function; BaseComponent(ComponentIndex componentIndex); - BaseComponent(BaseComponent&&) = default; + BaseComponent(BaseComponent&&) noexcept = default; virtual ~BaseComponent(); virtual std::unique_ptr Clone() const = 0; @@ -34,7 +34,7 @@ namespace Ndk inline static ComponentIndex GetMaxComponentIndex(); BaseComponent& operator=(const BaseComponent&) = delete; - BaseComponent& operator=(BaseComponent&&) = default; + BaseComponent& operator=(BaseComponent&&) noexcept = default; protected: BaseComponent(const BaseComponent&) = default; diff --git a/SDK/include/NDK/BaseWidget.hpp b/SDK/include/NDK/BaseWidget.hpp index a8c3e5cd4..12ab85cd1 100644 --- a/SDK/include/NDK/BaseWidget.hpp +++ b/SDK/include/NDK/BaseWidget.hpp @@ -30,7 +30,7 @@ namespace Ndk BaseWidget(BaseWidget* parent); BaseWidget(const BaseWidget&) = delete; - BaseWidget(BaseWidget&&) = default; + BaseWidget(BaseWidget&&) = delete; virtual ~BaseWidget(); template T* Add(Args&&... args); @@ -72,7 +72,7 @@ namespace Ndk void Show(bool show = true); BaseWidget& operator=(const BaseWidget&) = delete; - BaseWidget& operator=(BaseWidget&&) = default; + BaseWidget& operator=(BaseWidget&&) = delete; struct Padding { diff --git a/SDK/include/NDK/System.hpp b/SDK/include/NDK/System.hpp index d1b3cc39e..538fe097c 100644 --- a/SDK/include/NDK/System.hpp +++ b/SDK/include/NDK/System.hpp @@ -17,11 +17,11 @@ namespace Ndk public: System(); System(const System&) = delete; - System(System&&) = default; + System(System&&) noexcept = default; virtual ~System(); System& operator=(const System&) = delete; - System& operator=(System&&) = default; + System& operator=(System&&) noexcept = default; static SystemIndex RegisterSystem(); }; diff --git a/SDK/include/NDK/Widgets/CheckboxWidget.hpp b/SDK/include/NDK/Widgets/CheckboxWidget.hpp index c938740e4..9d175fdbe 100644 --- a/SDK/include/NDK/Widgets/CheckboxWidget.hpp +++ b/SDK/include/NDK/Widgets/CheckboxWidget.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2017 Samy Bensaid +// Copyright (C) 2017 Samy Bensaid // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequisites.hpp diff --git a/include/Nazara/Core/AbstractHash.hpp b/include/Nazara/Core/AbstractHash.hpp index dc227d0f7..e99e174db 100644 --- a/include/Nazara/Core/AbstractHash.hpp +++ b/include/Nazara/Core/AbstractHash.hpp @@ -20,7 +20,7 @@ namespace Nz public: AbstractHash() = default; AbstractHash(const AbstractHash&) = delete; - AbstractHash(AbstractHash&&) = default; + AbstractHash(AbstractHash&&) noexcept = default; virtual ~AbstractHash(); virtual void Append(const UInt8* data, std::size_t len) = 0; @@ -31,7 +31,7 @@ namespace Nz virtual const char* GetHashName() const = 0; AbstractHash& operator=(const AbstractHash&) = delete; - AbstractHash& operator=(AbstractHash&&) = default; + AbstractHash& operator=(AbstractHash&&) noexcept = default; static std::unique_ptr Get(HashType hash); }; diff --git a/include/Nazara/Core/ByteArray.hpp b/include/Nazara/Core/ByteArray.hpp index 9cc226c1d..ac378b366 100644 --- a/include/Nazara/Core/ByteArray.hpp +++ b/include/Nazara/Core/ByteArray.hpp @@ -41,7 +41,7 @@ namespace Nz inline ByteArray(size_type n, value_type value); template ByteArray(InputIterator first, InputIterator last); ByteArray(const ByteArray& other) = default; - ByteArray(ByteArray&& other) = default; + ByteArray(ByteArray&& other) noexcept = default; ~ByteArray() = default; inline iterator Append(const void* buffer, size_type size); diff --git a/include/Nazara/Core/ByteStream.hpp b/include/Nazara/Core/ByteStream.hpp index 58dd138cd..2f1dba4b6 100644 --- a/include/Nazara/Core/ByteStream.hpp +++ b/include/Nazara/Core/ByteStream.hpp @@ -24,7 +24,7 @@ namespace Nz ByteStream(void* ptr, Nz::UInt64 size); ByteStream(const void* ptr, Nz::UInt64 size); ByteStream(const ByteStream&) = delete; - inline ByteStream(ByteStream&& stream); + ByteStream(ByteStream&& stream) noexcept = default; virtual ~ByteStream(); inline Endianness GetDataEndianness() const; @@ -50,7 +50,7 @@ namespace Nz ByteStream& operator<<(const T& value); ByteStream& operator=(const ByteStream&) = delete; - inline ByteStream& operator=(ByteStream&&); + ByteStream& operator=(ByteStream&&) noexcept = default; private: virtual void OnEmptyStream(); diff --git a/include/Nazara/Core/ByteStream.inl b/include/Nazara/Core/ByteStream.inl index afd9f1fd3..b0c4c8233 100644 --- a/include/Nazara/Core/ByteStream.inl +++ b/include/Nazara/Core/ByteStream.inl @@ -16,19 +16,6 @@ namespace Nz m_context.stream = stream; } - /*! - * \brief Constructs a ByteStream object by move semantic - * - * \param stream ByteStream to move into this - */ - - inline ByteStream::ByteStream(ByteStream&& stream) : - m_ownedStream(std::move(stream.m_ownedStream)), - m_context(stream.m_context) - { - stream.m_context.stream = nullptr; - } - /*! * \brief Destructs the object and calls FlushBits * @@ -204,23 +191,6 @@ namespace Nz return *this; } - - /*! - * \brief Moves the other byte stream into this - * \return A reference to this - * - * \param stream ByteStream to move in this - */ - - inline ByteStream& ByteStream::operator=(ByteStream&& stream) - { - m_context = stream.m_context; - m_ownedStream = std::move(stream.m_ownedStream); - - stream.m_context.stream = nullptr; - - return *this; - } } #include diff --git a/include/Nazara/Core/CallOnExit.hpp b/include/Nazara/Core/CallOnExit.hpp index 3b38a3fb2..c4d90e171 100644 --- a/include/Nazara/Core/CallOnExit.hpp +++ b/include/Nazara/Core/CallOnExit.hpp @@ -19,14 +19,14 @@ namespace Nz public: CallOnExit(Func func = nullptr); CallOnExit(const CallOnExit&) = delete; - CallOnExit(CallOnExit&&) = delete; + CallOnExit(CallOnExit&&) noexcept = delete; ~CallOnExit(); void CallAndReset(Func func = nullptr); void Reset(Func func = nullptr); CallOnExit& operator=(const CallOnExit&) = delete; - CallOnExit& operator=(CallOnExit&&) = default; + CallOnExit& operator=(CallOnExit&&) noexcept = default; private: Func m_func; diff --git a/include/Nazara/Core/FileLogger.hpp b/include/Nazara/Core/FileLogger.hpp index 8f4e4fb60..c722b3290 100644 --- a/include/Nazara/Core/FileLogger.hpp +++ b/include/Nazara/Core/FileLogger.hpp @@ -19,7 +19,7 @@ namespace Nz public: FileLogger(const String& logPath = "NazaraLog.log"); FileLogger(const FileLogger&) = default; - FileLogger(FileLogger&&) = default; + FileLogger(FileLogger&&) noexcept = default; ~FileLogger(); void EnableTimeLogging(bool enable); @@ -32,7 +32,7 @@ namespace Nz void WriteError(ErrorType type, const String& error, unsigned int line = 0, const char* file = nullptr, const char* function = nullptr) override; FileLogger& operator=(const FileLogger&) = default; - FileLogger& operator=(FileLogger&&) = default; + FileLogger& operator=(FileLogger&&) noexcept = default; private: File m_outputFile; diff --git a/include/Nazara/Core/GuillotineBinPack.hpp b/include/Nazara/Core/GuillotineBinPack.hpp index d9f2590a5..8c82bb5d5 100644 --- a/include/Nazara/Core/GuillotineBinPack.hpp +++ b/include/Nazara/Core/GuillotineBinPack.hpp @@ -26,7 +26,7 @@ namespace Nz GuillotineBinPack(unsigned int width, unsigned int height); GuillotineBinPack(const Vector2ui& size); GuillotineBinPack(const GuillotineBinPack&) = default; - GuillotineBinPack(GuillotineBinPack&&) = default; + GuillotineBinPack(GuillotineBinPack&&) noexcept = default; ~GuillotineBinPack() = default; void Clear(); @@ -52,7 +52,7 @@ namespace Nz void Reset(const Vector2ui& size); GuillotineBinPack& operator=(const GuillotineBinPack&) = default; - GuillotineBinPack& operator=(GuillotineBinPack&&) = default; + GuillotineBinPack& operator=(GuillotineBinPack&&) noexcept = default; enum FreeRectChoiceHeuristic : int { diff --git a/include/Nazara/Core/MemoryStream.hpp b/include/Nazara/Core/MemoryStream.hpp index fed53fe3b..808b410c8 100644 --- a/include/Nazara/Core/MemoryStream.hpp +++ b/include/Nazara/Core/MemoryStream.hpp @@ -8,6 +8,7 @@ #define NAZARA_MEMORYSTREAM_HPP #include +#include #include namespace Nz @@ -20,7 +21,7 @@ namespace Nz inline MemoryStream(); inline MemoryStream(ByteArray* byteArray, OpenModeFlags openMode = OpenMode_ReadWrite); MemoryStream(const MemoryStream&) = default; - MemoryStream(MemoryStream&&) = default; + MemoryStream(MemoryStream&&) noexcept = default; ~MemoryStream() = default; void Clear(); @@ -36,14 +37,14 @@ namespace Nz bool SetCursorPos(UInt64 offset) override; MemoryStream& operator=(const MemoryStream&) = default; - MemoryStream& operator=(MemoryStream&&) = default; + MemoryStream& operator=(MemoryStream&&) noexcept = default; private: void FlushStream() override; std::size_t ReadBlock(void* buffer, std::size_t size) override; std::size_t WriteBlock(const void* buffer, std::size_t size) override; - ByteArray* m_buffer; + MovablePtr m_buffer; UInt64 m_pos; }; } diff --git a/include/Nazara/Core/ParameterList.hpp b/include/Nazara/Core/ParameterList.hpp index bc0d33a81..4dba23207 100644 --- a/include/Nazara/Core/ParameterList.hpp +++ b/include/Nazara/Core/ParameterList.hpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -72,7 +73,7 @@ namespace Nz std::atomic_uint counter; Destructor destructor; - void* ptr; + MovablePtr ptr; }; ParameterType type; @@ -81,6 +82,7 @@ namespace Nz // We define an empty constructor/destructor, to be able to put classes in the union Value() {} Value(const Value&) {} // Placeholder + Value(Value&&) noexcept {} // Placeholder ~Value() {} bool boolVal; diff --git a/include/Nazara/Core/PrimitiveList.hpp b/include/Nazara/Core/PrimitiveList.hpp index 98c132279..34014de47 100644 --- a/include/Nazara/Core/PrimitiveList.hpp +++ b/include/Nazara/Core/PrimitiveList.hpp @@ -19,7 +19,7 @@ namespace Nz public: PrimitiveList() = default; PrimitiveList(const PrimitiveList&) = default; - PrimitiveList(PrimitiveList&&) = default; + PrimitiveList(PrimitiveList&&) noexcept = default; ~PrimitiveList() = default; void AddBox(const Vector3f& lengths, const Vector3ui& subdivision = Vector3ui(0U), const Matrix4f& transformMatrix = Matrix4f::Identity()); @@ -41,7 +41,7 @@ namespace Nz std::size_t GetSize() const; PrimitiveList& operator=(const PrimitiveList&) = default; - PrimitiveList& operator=(PrimitiveList&&) = default; + PrimitiveList& operator=(PrimitiveList&&) noexcept = default; Primitive& operator()(unsigned int i); const Primitive& operator()(unsigned int i) const; diff --git a/include/Nazara/Core/RefCounted.hpp b/include/Nazara/Core/RefCounted.hpp index 421da4c0e..d348d9280 100644 --- a/include/Nazara/Core/RefCounted.hpp +++ b/include/Nazara/Core/RefCounted.hpp @@ -23,7 +23,7 @@ namespace Nz public: RefCounted(bool persistent = true); RefCounted(const RefCounted&) = delete; - RefCounted(RefCounted&&) = default; + RefCounted(RefCounted&&) = delete; virtual ~RefCounted(); void AddReference() const; @@ -37,7 +37,7 @@ namespace Nz bool SetPersistent(bool persistent = true, bool checkReferenceCount = false); RefCounted& operator=(const RefCounted&) = delete; - RefCounted& operator=(RefCounted&&) = default; + RefCounted& operator=(RefCounted&&) = delete; private: std::atomic_bool m_persistent; diff --git a/include/Nazara/Core/SerializationContext.hpp b/include/Nazara/Core/SerializationContext.hpp index 4111f7a7b..122fc41dc 100644 --- a/include/Nazara/Core/SerializationContext.hpp +++ b/include/Nazara/Core/SerializationContext.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include namespace Nz @@ -18,7 +19,7 @@ namespace Nz struct NAZARA_CORE_API SerializationContext { - Stream* stream; + MovablePtr stream; Endianness endianness = Endianness_BigEndian; //< Default to Big Endian encoding UInt8 readBitPos = 8; //< 8 means no bit is currently read UInt8 readByte; //< Undefined value, will be initialized at the first bit read diff --git a/include/Nazara/Core/StdLogger.hpp b/include/Nazara/Core/StdLogger.hpp index 998ec7b53..5330d22ab 100644 --- a/include/Nazara/Core/StdLogger.hpp +++ b/include/Nazara/Core/StdLogger.hpp @@ -17,7 +17,7 @@ namespace Nz public: StdLogger() = default; StdLogger(const StdLogger&) = default; - StdLogger(StdLogger&&) = default; + StdLogger(StdLogger&&) noexcept = default; ~StdLogger(); void EnableStdReplication(bool enable) override; @@ -28,7 +28,7 @@ namespace Nz void WriteError(ErrorType type, const String& error, unsigned int line = 0, const char* file = nullptr, const char* function = nullptr) override; StdLogger& operator=(const StdLogger&) = default; - StdLogger& operator=(StdLogger&&) = default; + StdLogger& operator=(StdLogger&&) noexcept = default; }; } diff --git a/include/Nazara/Core/Stream.hpp b/include/Nazara/Core/Stream.hpp index 2c140c144..a1f86e12e 100644 --- a/include/Nazara/Core/Stream.hpp +++ b/include/Nazara/Core/Stream.hpp @@ -20,7 +20,7 @@ namespace Nz { public: Stream(const Stream&) = default; - Stream(Stream&&) = default; + Stream(Stream&&) noexcept = default; virtual ~Stream(); virtual bool EndOfStream() const = 0; @@ -52,7 +52,7 @@ namespace Nz inline std::size_t Write(const void* buffer, std::size_t size); Stream& operator=(const Stream&) = default; - Stream& operator=(Stream&&) = default; + Stream& operator=(Stream&&) noexcept = default; protected: inline Stream(StreamOptionFlags streamOptions = StreamOption_None, OpenModeFlags openMode = OpenMode_NotOpen); diff --git a/include/Nazara/Graphics/AbstractRenderQueue.hpp b/include/Nazara/Graphics/AbstractRenderQueue.hpp index f4d268786..341d61607 100644 --- a/include/Nazara/Graphics/AbstractRenderQueue.hpp +++ b/include/Nazara/Graphics/AbstractRenderQueue.hpp @@ -32,7 +32,7 @@ namespace Nz AbstractRenderQueue() = default; AbstractRenderQueue(const AbstractRenderQueue&) = delete; - AbstractRenderQueue(AbstractRenderQueue&&) = default; + AbstractRenderQueue(AbstractRenderQueue&&) noexcept = default; virtual ~AbstractRenderQueue(); // Je ne suis vraiment pas fan du nombre de surcharges pour AddBillboards, @@ -55,7 +55,7 @@ namespace Nz virtual void Clear(bool fully = false); AbstractRenderQueue& operator=(const AbstractRenderQueue&) = delete; - AbstractRenderQueue& operator=(AbstractRenderQueue&&) = default; + AbstractRenderQueue& operator=(AbstractRenderQueue&&) noexcept = default; struct DirectionalLight { diff --git a/include/Nazara/Graphics/AbstractRenderTechnique.hpp b/include/Nazara/Graphics/AbstractRenderTechnique.hpp index 0897c5312..ede4225f7 100644 --- a/include/Nazara/Graphics/AbstractRenderTechnique.hpp +++ b/include/Nazara/Graphics/AbstractRenderTechnique.hpp @@ -22,7 +22,7 @@ namespace Nz public: AbstractRenderTechnique(); AbstractRenderTechnique(const AbstractRenderTechnique&) = delete; - AbstractRenderTechnique(AbstractRenderTechnique&&) = default; + AbstractRenderTechnique(AbstractRenderTechnique&&) noexcept = default; virtual ~AbstractRenderTechnique(); virtual void Clear(const SceneData& sceneData) const = 0; @@ -37,7 +37,7 @@ namespace Nz virtual bool IsInstancingEnabled() const; AbstractRenderTechnique& operator=(const AbstractRenderTechnique&) = delete; - AbstractRenderTechnique& operator=(AbstractRenderTechnique&&) = default; + AbstractRenderTechnique& operator=(AbstractRenderTechnique&&) noexcept = default; protected: bool m_instancingEnabled; diff --git a/include/Nazara/Graphics/RenderQueue.hpp b/include/Nazara/Graphics/RenderQueue.hpp index 8ddb725ca..0d1f1fb81 100644 --- a/include/Nazara/Graphics/RenderQueue.hpp +++ b/include/Nazara/Graphics/RenderQueue.hpp @@ -19,8 +19,13 @@ namespace Nz using Index = Nz::UInt64; RenderQueueInternal() = default; + RenderQueueInternal(const RenderQueueInternal&) = default; + RenderQueueInternal(RenderQueueInternal&&) = default; ~RenderQueueInternal() = default; + RenderQueueInternal& operator=(const RenderQueueInternal&) = default; + RenderQueueInternal& operator=(RenderQueueInternal&&) = default; + protected: using RenderDataPair = std::pair; @@ -39,7 +44,7 @@ namespace Nz RenderQueue() = default; RenderQueue(const RenderQueue&) = default; - RenderQueue(RenderQueue&&) = default; + RenderQueue(RenderQueue&&) noexcept = default; ~RenderQueue() = default; void Clear(); @@ -55,7 +60,7 @@ namespace Nz inline size_type size() const; RenderQueue& operator=(const RenderQueue&) = default; - RenderQueue& operator=(RenderQueue&&) = default; + RenderQueue& operator=(RenderQueue&&) noexcept = default; private: const RenderData& GetData(std::size_t i) const; diff --git a/include/Nazara/Graphics/Renderable.hpp b/include/Nazara/Graphics/Renderable.hpp index 62cf861c6..22b76d423 100644 --- a/include/Nazara/Graphics/Renderable.hpp +++ b/include/Nazara/Graphics/Renderable.hpp @@ -21,7 +21,7 @@ namespace Nz public: Renderable() = default; Renderable(const Renderable& renderable) = default; - Renderable(Renderable&&) = default; + Renderable(Renderable&&) noexcept = default; virtual ~Renderable(); virtual void AddToRenderQueue(AbstractRenderQueue* renderQueue, const Matrix4f& transformMatrix) const = 0; @@ -33,7 +33,7 @@ namespace Nz virtual void UpdateBoundingVolume(const Matrix4f& transformMatrix); Renderable& operator=(const Renderable& renderable) = default; - Renderable& operator=(Renderable&& renderable) = default; + Renderable& operator=(Renderable&& renderable) noexcept = default; protected: virtual void MakeBoundingVolume() const = 0; diff --git a/include/Nazara/Network/AbstractSocket.hpp b/include/Nazara/Network/AbstractSocket.hpp index 0af1c8b19..315364e8d 100644 --- a/include/Nazara/Network/AbstractSocket.hpp +++ b/include/Nazara/Network/AbstractSocket.hpp @@ -19,7 +19,7 @@ namespace Nz { public: AbstractSocket(const AbstractSocket&) = delete; - AbstractSocket(AbstractSocket&& abstractSocket); + AbstractSocket(AbstractSocket&& abstractSocket) noexcept; virtual ~AbstractSocket(); void Close(); diff --git a/include/Nazara/Network/ENetHost.hpp b/include/Nazara/Network/ENetHost.hpp index d6e1a8018..28a2d2da5 100644 --- a/include/Nazara/Network/ENetHost.hpp +++ b/include/Nazara/Network/ENetHost.hpp @@ -135,7 +135,7 @@ namespace Nz std::vector m_peers; std::vector m_pendingIncomingPackets; std::vector m_pendingOutgoingPackets; - UInt8* m_receivedData; + MovablePtr m_receivedData; Bitset m_dispatchQueue; MemoryPool m_packetPool; IpAddress m_address; diff --git a/include/Nazara/Network/ENetPeer.hpp b/include/Nazara/Network/ENetPeer.hpp index c1822e761..f2435f579 100644 --- a/include/Nazara/Network/ENetPeer.hpp +++ b/include/Nazara/Network/ENetPeer.hpp @@ -1,4 +1,4 @@ -/* +/* Copyright(c) 2002 - 2016 Lee Salzman Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions : @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -176,8 +177,8 @@ namespace Nz static constexpr std::size_t unsequencedWindow = ENetPeer_ReliableWindowSize / 32; - ENetHost* m_host; - IpAddress m_address; /**< Internet address of the peer */ + MovablePtr m_host; + IpAddress m_address; //< Internet address of the peer std::array m_unsequencedWindow; std::bernoulli_distribution m_packetLossProbability; std::list m_dispatchedCommands; diff --git a/include/Nazara/Network/IpAddress.hpp b/include/Nazara/Network/IpAddress.hpp index 965ad924f..9ef8823e7 100644 --- a/include/Nazara/Network/IpAddress.hpp +++ b/include/Nazara/Network/IpAddress.hpp @@ -32,7 +32,7 @@ namespace Nz inline explicit IpAddress(const char* address); inline explicit IpAddress(const String& address); IpAddress(const IpAddress&) = default; - IpAddress(IpAddress&&) = default; + IpAddress(IpAddress&&) noexcept = default; ~IpAddress() = default; bool BuildFromAddress(const char* address); @@ -53,7 +53,7 @@ namespace Nz inline explicit operator bool() const; IpAddress& operator=(const IpAddress&) = default; - IpAddress& operator=(IpAddress&&) = default; + IpAddress& operator=(IpAddress&&) noexcept = default; static String ResolveAddress(const IpAddress& address, String* service = nullptr, ResolveError* error = nullptr); static std::vector ResolveHostname(NetProtocol procol, const String& hostname, const String& protocol = "http", ResolveError* error = nullptr); diff --git a/include/Nazara/Network/RUdpConnection.hpp b/include/Nazara/Network/RUdpConnection.hpp index 64a30c0b8..0740b4647 100644 --- a/include/Nazara/Network/RUdpConnection.hpp +++ b/include/Nazara/Network/RUdpConnection.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2017 Jérôme Leclercq +// Copyright (C) 2017 Jérôme Leclercq // This file is part of the "Nazara Engine - Network module" // For conditions of distribution and use, see copyright notice in Config.hpp diff --git a/include/Nazara/Network/TcpClient.hpp b/include/Nazara/Network/TcpClient.hpp index 39ac2d9ac..43b299994 100644 --- a/include/Nazara/Network/TcpClient.hpp +++ b/include/Nazara/Network/TcpClient.hpp @@ -24,7 +24,7 @@ namespace Nz public: inline TcpClient(); - TcpClient(TcpClient&& tcpClient) = default; + TcpClient(TcpClient&& tcpClient) noexcept = default; ~TcpClient() = default; SocketState Connect(const IpAddress& remoteAddress); diff --git a/include/Nazara/Network/UdpSocket.hpp b/include/Nazara/Network/UdpSocket.hpp index 0b7c8d4d9..47a3a3bbc 100644 --- a/include/Nazara/Network/UdpSocket.hpp +++ b/include/Nazara/Network/UdpSocket.hpp @@ -21,7 +21,7 @@ namespace Nz public: inline UdpSocket(); inline UdpSocket(NetProtocol protocol); - inline UdpSocket(UdpSocket&& udpSocket); + inline UdpSocket(UdpSocket&& udpSocket) noexcept; ~UdpSocket() = default; inline SocketState Bind(UInt16 port); diff --git a/include/Nazara/Network/UdpSocket.inl b/include/Nazara/Network/UdpSocket.inl index ed43b3428..1879c1a8a 100644 --- a/include/Nazara/Network/UdpSocket.inl +++ b/include/Nazara/Network/UdpSocket.inl @@ -33,7 +33,7 @@ namespace Nz * \param udpSocket UdpSocket to move into this */ - inline UdpSocket::UdpSocket(UdpSocket&& udpSocket) : + inline UdpSocket::UdpSocket(UdpSocket&& udpSocket) noexcept : AbstractSocket(std::move(udpSocket)), m_boundAddress(std::move(udpSocket.m_boundAddress)) { diff --git a/include/Nazara/Physics3D/PhysWorld3D.hpp b/include/Nazara/Physics3D/PhysWorld3D.hpp index e32ba2528..223fce4fe 100644 --- a/include/Nazara/Physics3D/PhysWorld3D.hpp +++ b/include/Nazara/Physics3D/PhysWorld3D.hpp @@ -33,7 +33,7 @@ namespace Nz PhysWorld3D(); PhysWorld3D(const PhysWorld3D&) = delete; - PhysWorld3D(PhysWorld3D&&) = default; + PhysWorld3D(PhysWorld3D&&) noexcept = default; ~PhysWorld3D(); int CreateMaterial(String name = String()); @@ -61,7 +61,7 @@ namespace Nz void Step(float timestep); PhysWorld3D& operator=(const PhysWorld3D&) = delete; - PhysWorld3D& operator=(PhysWorld3D&&) = default; + PhysWorld3D& operator=(PhysWorld3D&&) noexcept = default; private: struct Callback diff --git a/include/Nazara/Platform/CursorController.hpp b/include/Nazara/Platform/CursorController.hpp index 8c4f8ed15..d27384d18 100644 --- a/include/Nazara/Platform/CursorController.hpp +++ b/include/Nazara/Platform/CursorController.hpp @@ -25,13 +25,13 @@ namespace Nz public: CursorController() = default; CursorController(const CursorController&) = delete; - CursorController(CursorController&&) = default; + CursorController(CursorController&&) noexcept = default; ~CursorController() = default; inline void UpdateCursor(const CursorRef& cursor); CursorController& operator=(const CursorController&) = delete; - CursorController& operator=(CursorController&&) = default; + CursorController& operator=(CursorController&&) noexcept = default; NazaraSignal(OnCursorUpdated, const CursorController* /*cursorController*/, const CursorRef& /*cursor*/); }; diff --git a/include/Nazara/Platform/EventHandler.hpp b/include/Nazara/Platform/EventHandler.hpp index 5aa12bae5..7404a26d6 100644 --- a/include/Nazara/Platform/EventHandler.hpp +++ b/include/Nazara/Platform/EventHandler.hpp @@ -25,13 +25,13 @@ namespace Nz public: EventHandler() = default; explicit EventHandler(const EventHandler&); - EventHandler(EventHandler&&) = default; + EventHandler(EventHandler&&) noexcept = default; ~EventHandler() = default; inline void Dispatch(const WindowEvent& event); EventHandler& operator=(const EventHandler&) = delete; - EventHandler& operator=(EventHandler&&) = default; + EventHandler& operator=(EventHandler&&) noexcept = default; NazaraSignal(OnEvent, const EventHandler* /*eventHandler*/, const WindowEvent& /*event*/); NazaraSignal(OnGainedFocus, const EventHandler* /*eventHandler*/); diff --git a/include/Nazara/Utility/Buffer.hpp b/include/Nazara/Utility/Buffer.hpp index 1b7709efb..e125c63e9 100644 --- a/include/Nazara/Utility/Buffer.hpp +++ b/include/Nazara/Utility/Buffer.hpp @@ -33,7 +33,7 @@ namespace Nz Buffer(BufferType type); Buffer(BufferType type, UInt32 size, DataStorage storage = DataStorage_Software, BufferUsageFlags usage = 0); Buffer(const Buffer&) = delete; - Buffer(Buffer&&) = default; + Buffer(Buffer&&) = delete; ~Buffer(); bool CopyContent(const BufferRef& buffer); @@ -61,7 +61,7 @@ namespace Nz void Unmap() const; Buffer& operator=(const Buffer&) = delete; - Buffer& operator=(Buffer&&) = default; + Buffer& operator=(Buffer&&) = delete; static bool IsStorageSupported(DataStorage storage); template static BufferRef New(Args&&... args); diff --git a/src/Nazara/Network/AbstractSocket.cpp b/src/Nazara/Network/AbstractSocket.cpp index 879589cd6..64bdd0e0d 100644 --- a/src/Nazara/Network/AbstractSocket.cpp +++ b/src/Nazara/Network/AbstractSocket.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2017 Jérôme Leclercq +// Copyright (C) 2017 Jérôme Leclercq // This file is part of the "Nazara Engine - Utility module" // For conditions of distribution and use, see copyright notice in Config.hpp @@ -45,7 +45,7 @@ namespace Nz * \param abstractSocket AbstractSocket to move into this */ - AbstractSocket::AbstractSocket(AbstractSocket&& abstractSocket) : + AbstractSocket::AbstractSocket(AbstractSocket&& abstractSocket) noexcept : m_protocol(abstractSocket.m_protocol), m_lastError(abstractSocket.m_lastError), m_handle(abstractSocket.m_handle), diff --git a/src/Nazara/Network/ENetHost.cpp b/src/Nazara/Network/ENetHost.cpp index 5eb8d5862..5744b8743 100644 --- a/src/Nazara/Network/ENetHost.cpp +++ b/src/Nazara/Network/ENetHost.cpp @@ -489,7 +489,7 @@ namespace Nz if (m_receivedDataLength < NazaraOffsetOf(ENetProtocolHeader, sentTime)) return false; - ENetProtocolHeader* header = reinterpret_cast(m_receivedData); + ENetProtocolHeader* header = reinterpret_cast(m_receivedData.Get()); UInt16 peerID = NetToHost(header->peerID); UInt8 sessionID = (peerID & ENetProtocolHeaderSessionMask) >> ENetProtocolHeaderSessionShift; From 56b23a2f27455d348da731d95f0dc92af0bf38f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 12 Jun 2018 14:31:49 +0200 Subject: [PATCH 059/194] Network/SocketPoller: Wait() now returns the number of active sockets, and optionally the last error It will also ignore the EINTR error on Linux --- ChangeLog.md | 2 + SDK/src/NDK/Lua/LuaBinding_Network.cpp | 5 +- include/Nazara/Network/Enums.hpp | 1 + include/Nazara/Network/SocketPoller.hpp | 2 +- src/Nazara/Network/AlgorithmNetwork.cpp | 55 +++++++------ src/Nazara/Network/Linux/SocketPollerImpl.cpp | 4 +- src/Nazara/Network/Linux/SocketPollerImpl.hpp | 2 +- src/Nazara/Network/Posix/SocketImpl.cpp | 79 ++++++++++--------- src/Nazara/Network/Posix/SocketImpl.hpp | 4 +- src/Nazara/Network/Posix/SocketPollerImpl.cpp | 8 +- src/Nazara/Network/Posix/SocketPollerImpl.hpp | 5 +- src/Nazara/Network/SocketPoller.cpp | 26 ++++-- src/Nazara/Network/Win32/SocketImpl.cpp | 6 +- src/Nazara/Network/Win32/SocketImpl.hpp | 2 +- src/Nazara/Network/Win32/SocketPollerImpl.cpp | 11 ++- src/Nazara/Network/Win32/SocketPollerImpl.hpp | 2 +- 16 files changed, 120 insertions(+), 94 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 8f7b68007..a09c07788 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -112,6 +112,8 @@ Nazara Engine: - Fixed Model copy constructor not copying materials - ⚠️ Added InstancedRenderable::Clone() method - Fixed a lot of classes not having their move constructor/assignation operator marked noexcept +- ⚠️ SocketPoller::Wait now returns the number of socket marked as ready, and takes an additional optional parameter allowing to query the last error. +- SocketPoller will now silently ignore "interrupt errors" Nazara Development Kit: - Added ImageWidget (#139) diff --git a/SDK/src/NDK/Lua/LuaBinding_Network.cpp b/SDK/src/NDK/Lua/LuaBinding_Network.cpp index c54ef89a0..f3f82264a 100644 --- a/SDK/src/NDK/Lua/LuaBinding_Network.cpp +++ b/SDK/src/NDK/Lua/LuaBinding_Network.cpp @@ -266,14 +266,15 @@ namespace Ndk state.SetGlobal("ResolveError"); // Nz::SocketError - static_assert(Nz::SocketError_Max + 1 == 15, "Nz::ResolveError has been updated but change was not reflected to Lua binding"); - state.PushTable(0, 15); + static_assert(Nz::SocketError_Max + 1 == 16, "Nz::SocketError has been updated but change was not reflected to Lua binding"); + state.PushTable(0, 16); { state.PushField("AddressNotAvailable", Nz::SocketError_AddressNotAvailable); state.PushField("ConnectionClosed", Nz::SocketError_ConnectionClosed); state.PushField("ConnectionRefused", Nz::SocketError_ConnectionRefused); state.PushField("DatagramSize", Nz::SocketError_DatagramSize); state.PushField("Internal", Nz::SocketError_Internal); + state.PushField("Interrupted", Nz::SocketError_Interrupted); state.PushField("Packet", Nz::SocketError_Packet); state.PushField("NetworkError", Nz::SocketError_NetworkError); state.PushField("NoError", Nz::SocketError_NoError); diff --git a/include/Nazara/Network/Enums.hpp b/include/Nazara/Network/Enums.hpp index 42089b6a4..dc082deba 100644 --- a/include/Nazara/Network/Enums.hpp +++ b/include/Nazara/Network/Enums.hpp @@ -78,6 +78,7 @@ namespace Nz SocketError_ConnectionRefused, //< The connection attempt was refused SocketError_DatagramSize, //< The datagram size is over the system limit SocketError_Internal, //< The error is coming from the engine + SocketError_Interrupted, //< The operation was interrupted by a signal SocketError_Packet, //< The packet encoding/decoding failed, probably because of corrupted data SocketError_NetworkError, //< The network system has failed (maybe network is down) SocketError_NotInitialized, //< Nazara network has not been initialized diff --git a/include/Nazara/Network/SocketPoller.hpp b/include/Nazara/Network/SocketPoller.hpp index 9a5af5452..bbe446c08 100644 --- a/include/Nazara/Network/SocketPoller.hpp +++ b/include/Nazara/Network/SocketPoller.hpp @@ -31,7 +31,7 @@ namespace Nz bool RegisterSocket(AbstractSocket& socket, SocketPollEventFlags eventFlags); void UnregisterSocket(AbstractSocket& socket); - bool Wait(int msTimeout); + unsigned int Wait(int msTimeout, SocketError* error = nullptr); SocketPoller& operator=(SocketPoller&&) noexcept = default; diff --git a/src/Nazara/Network/AlgorithmNetwork.cpp b/src/Nazara/Network/AlgorithmNetwork.cpp index 9a593db39..55d6a5569 100644 --- a/src/Nazara/Network/AlgorithmNetwork.cpp +++ b/src/Nazara/Network/AlgorithmNetwork.cpp @@ -84,35 +84,35 @@ namespace Nz * * \param resolveError Error enumeration */ - const char* ErrorToString(Nz::ResolveError resolveError) + const char* ErrorToString(ResolveError resolveError) { switch (resolveError) { - case Nz::ResolveError_NoError: + case ResolveError_NoError: return "No error"; - case Nz::ResolveError_Internal: + case ResolveError_Internal: return "An internal error occurred"; - case Nz::ResolveError_ResourceError: + case ResolveError_ResourceError: return "The operating system lacks the resources to proceed"; - case Nz::ResolveError_NonRecoverable: + case ResolveError_NonRecoverable: return "A nonrecoverable error occurred"; - case Nz::ResolveError_NotFound: + case ResolveError_NotFound: return "No such host is known"; - case Nz::ResolveError_NotInitialized: + case ResolveError_NotInitialized: return "Nazara Network has not been initialized"; - case Nz::ResolveError_ProtocolNotSupported: + case ResolveError_ProtocolNotSupported: return "A specified protocol is not supported by the server"; - case Nz::ResolveError_TemporaryFailure: + case ResolveError_TemporaryFailure: return "A temporary failure occurred, try again"; - case Nz::ResolveError_Unknown: + case ResolveError_Unknown: return "An unknown error occurred"; default: @@ -127,53 +127,56 @@ namespace Nz * * \param socketError Error enumeration */ - const char* ErrorToString(Nz::SocketError socketError) + const char* ErrorToString(SocketError socketError) { switch (socketError) { - case Nz::SocketError_NoError: + case SocketError_NoError: return "No error"; - case Nz::SocketError_AddressNotAvailable: + case SocketError_AddressNotAvailable: return "The address is already in use"; - case Nz::SocketError_ConnectionClosed: + case SocketError_ConnectionClosed: return "The connection has been closed"; - case Nz::SocketError_ConnectionRefused: + case SocketError_ConnectionRefused: return "The connection attempt was refused"; - case Nz::SocketError_DatagramSize: + case SocketError_DatagramSize: return "The datagram size is over the system limit"; - case Nz::SocketError_Internal: + case SocketError_Internal: return "An internal error occurred"; - case Nz::SocketError_Packet: + case SocketError_Interrupted: + return "The operation was interrupted by a signal"; + + case SocketError_Packet: return "Packet encoding or decoding failed"; - case Nz::SocketError_NetworkError: + case SocketError_NetworkError: return "Networking subsystem failed"; - case Nz::SocketError_NotInitialized: + case SocketError_NotInitialized: return "Network module has not been initialized"; - case Nz::SocketError_NotSupported: + case SocketError_NotSupported: return "This operation is not supported"; - case Nz::SocketError_ResolveError: + case SocketError_ResolveError: return "The hostname couldn't be resolved"; - case Nz::SocketError_ResourceError: + case SocketError_ResourceError: return "The operating system lacks the resources to proceed"; - case Nz::SocketError_TimedOut: + case SocketError_TimedOut: return "The operation timed out"; - case Nz::SocketError_Unknown: + case SocketError_Unknown: return "An unknown error occurred"; - case Nz::SocketError_UnreachableHost: + case SocketError_UnreachableHost: return "The host is not reachable"; default: diff --git a/src/Nazara/Network/Linux/SocketPollerImpl.cpp b/src/Nazara/Network/Linux/SocketPollerImpl.cpp index b35a37ca5..53de22a70 100644 --- a/src/Nazara/Network/Linux/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Linux/SocketPollerImpl.cpp @@ -81,7 +81,7 @@ namespace Nz NazaraWarning("An error occured while removing socket from epoll structure (errno " + String::Number(errno) + ": " + Error::GetLastSystemError() + ')'); } - int SocketPollerImpl::Wait(int msTimeout, SocketError* error) + unsigned int SocketPollerImpl::Wait(int msTimeout, SocketError* error) { int activeSockets; @@ -93,7 +93,7 @@ namespace Nz if (activeSockets == -1) { if (error) - *error = SocketImpl::TranslateErrnoToResolveError(errno); + *error = SocketImpl::TranslateErrnoToSocketError(errno); return 0; } diff --git a/src/Nazara/Network/Linux/SocketPollerImpl.hpp b/src/Nazara/Network/Linux/SocketPollerImpl.hpp index 882141d38..4200dff79 100644 --- a/src/Nazara/Network/Linux/SocketPollerImpl.hpp +++ b/src/Nazara/Network/Linux/SocketPollerImpl.hpp @@ -30,7 +30,7 @@ namespace Nz bool RegisterSocket(SocketHandle socket, SocketPollEventFlags eventFlags); void UnregisterSocket(SocketHandle socket); - int Wait(int msTimeout, SocketError* error); + unsigned int Wait(int msTimeout, SocketError* error); private: std::unordered_set m_readyToReadSockets; diff --git a/src/Nazara/Network/Posix/SocketImpl.cpp b/src/Nazara/Network/Posix/SocketImpl.cpp index d372d6fff..c8140f019 100644 --- a/src/Nazara/Network/Posix/SocketImpl.cpp +++ b/src/Nazara/Network/Posix/SocketImpl.cpp @@ -41,7 +41,7 @@ namespace Nz else { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); } return newClient; @@ -58,7 +58,7 @@ namespace Nz if (bind(handle, reinterpret_cast(&nameBuffer), bufferLength) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return SocketState_NotConnected; } @@ -76,7 +76,7 @@ namespace Nz SocketHandle handle = socket(TranslateNetProtocolToAF(protocol), TranslateSocketTypeToSock(type), 0); if (handle == InvalidHandle && error != nullptr) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return handle; } @@ -129,7 +129,7 @@ namespace Nz if (errorCode == EADDRNOTAVAIL) *error = SocketError_ConnectionRefused; //< ConnectionRefused seems more legit than AddressNotAvailable in connect case else - *error = TranslateErrnoToResolveError(errorCode); + *error = TranslateErrnoToSocketError(errorCode); } return SocketState_NotConnected; @@ -162,7 +162,7 @@ namespace Nz if (code) { if (error) - *error = TranslateErrnoToResolveError(code); + *error = TranslateErrnoToSocketError(code); return SocketState_NotConnected; } @@ -177,7 +177,7 @@ namespace Nz else { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return SocketState_NotConnected; } @@ -202,7 +202,7 @@ namespace Nz if (code < 0) return SocketError_Internal; - return TranslateErrnoToResolveError(code); + return TranslateErrnoToSocketError(code); } int SocketImpl::GetLastErrorCode() @@ -218,7 +218,7 @@ namespace Nz if (getsockopt(handle, SOL_SOCKET, SO_ERROR, &code, &codeLength) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return -1; } @@ -240,7 +240,7 @@ namespace Nz if (bind(handle, reinterpret_cast(&nameBuffer), bufferLength) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return SocketState_NotConnected; } @@ -248,7 +248,7 @@ namespace Nz if (listen(handle, queueSize) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return SocketState_NotConnected; } @@ -267,7 +267,7 @@ namespace Nz if (ioctl(handle, FIONREAD, &availableBytes) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return 0; } @@ -286,7 +286,7 @@ namespace Nz if (getsockopt(handle, SOL_SOCKET, SO_BROADCAST, &code, &codeLength) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; } @@ -305,7 +305,7 @@ namespace Nz if (getsockopt(handle, SOL_SOCKET, SO_KEEPALIVE, &code, &codeLength) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; } @@ -324,7 +324,7 @@ namespace Nz if (getsockopt(handle, IPPROTO_IP, IP_MTU, &code, &codeLength) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return 0; } @@ -343,7 +343,7 @@ namespace Nz if (getsockopt(handle, IPPROTO_TCP, TCP_NODELAY, &code, &codeLength) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; } @@ -362,7 +362,7 @@ namespace Nz if (getsockopt(handle, SOL_SOCKET, SO_RCVBUF, reinterpret_cast(&code), &codeLength) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return 0; } @@ -385,7 +385,7 @@ namespace Nz if (getpeername(handle, reinterpret_cast(nameBuffer.data()), &bufferLength) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return IpAddress(); } @@ -404,7 +404,7 @@ namespace Nz if (getsockopt(handle, SOL_SOCKET, SO_SNDBUF, reinterpret_cast(&code), &codeLength) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return 0; } @@ -432,7 +432,7 @@ namespace Nz if (errorCode == EINVAL) *error = SocketError_NoError; else - *error = TranslateErrnoToResolveError(errorCode); + *error = TranslateErrnoToSocketError(errorCode); } return IpAddress(); @@ -444,7 +444,7 @@ namespace Nz return IpAddressImpl::FromSockAddr(reinterpret_cast(nameBuffer.data())); } - int SocketImpl::Poll(PollSocket* fdarray, std::size_t nfds, int timeout, SocketError* error) + unsigned int SocketImpl::Poll(PollSocket* fdarray, std::size_t nfds, int timeout, SocketError* error) { NazaraAssert(fdarray && nfds > 0, "Invalid fdarray"); @@ -454,12 +454,12 @@ namespace Nz if (result < 0) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return 0; } - return result; + return static_cast(result); } bool SocketImpl::Receive(SocketHandle handle, void* buffer, int length, int* read, SocketError* error) @@ -486,7 +486,7 @@ namespace Nz default: { if (error) - *error = TranslateErrnoToResolveError(errorCode); + *error = TranslateErrnoToSocketError(errorCode); return false; //< Error } @@ -541,7 +541,7 @@ namespace Nz default: { if (error) - *error = TranslateErrnoToResolveError(errorCode); + *error = TranslateErrnoToSocketError(errorCode); return false; //< Error } @@ -618,7 +618,7 @@ namespace Nz default: { if (error) - *error = TranslateErrnoToResolveError(errorCode); + *error = TranslateErrnoToSocketError(errorCode); return false; //< Error } @@ -677,7 +677,7 @@ namespace Nz default: { if (error) - *error = TranslateErrnoToResolveError(errorCode); + *error = TranslateErrnoToSocketError(errorCode); return false; //< Error } @@ -730,7 +730,7 @@ namespace Nz default: { if (error) - *error = TranslateErrnoToResolveError(errorCode); + *error = TranslateErrnoToSocketError(errorCode); return false; //< Error } @@ -770,7 +770,7 @@ namespace Nz default: { if (error) - *error = TranslateErrnoToResolveError(errorCode); + *error = TranslateErrnoToSocketError(errorCode); return false; //< Error } @@ -794,7 +794,7 @@ namespace Nz if (ioctl(handle, FIONBIO, &block) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; //< Error } @@ -813,7 +813,7 @@ namespace Nz if (setsockopt(handle, SOL_SOCKET, SO_BROADCAST, reinterpret_cast(&option), sizeof(option)) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; //< Error } @@ -832,7 +832,7 @@ namespace Nz if (setsockopt(handle, IPPROTO_IPV6, IPV6_V6ONLY, reinterpret_cast(&option), sizeof(option)) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; //< Error } @@ -854,7 +854,7 @@ namespace Nz if (setsockopt(handle, SOL_SOCKET, SO_KEEPALIVE, &keepAlive , sizeof(keepAlive)) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; //< Error } @@ -862,7 +862,7 @@ namespace Nz if (setsockopt(handle, IPPROTO_TCP, TCP_KEEPIDLE, &keepIdle, sizeof(keepIdle)) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; //< Error } @@ -870,7 +870,7 @@ namespace Nz if (setsockopt(handle, IPPROTO_TCP, TCP_KEEPINTVL, &keepInterval, sizeof(keepInterval)) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; //< Error } @@ -889,7 +889,7 @@ namespace Nz if (setsockopt(handle, IPPROTO_TCP, TCP_NODELAY, &option, sizeof(option)) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; //< Error } @@ -908,7 +908,7 @@ namespace Nz if (setsockopt(handle, SOL_SOCKET, SO_RCVBUF, reinterpret_cast(&option), sizeof(option)) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; //< Error } @@ -927,7 +927,7 @@ namespace Nz if (setsockopt(handle, SOL_SOCKET, SO_SNDBUF, reinterpret_cast(&option), sizeof(option)) == SOCKET_ERROR) { if (error) - *error = TranslateErrnoToResolveError(GetLastErrorCode()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return false; //< Error } @@ -938,7 +938,7 @@ namespace Nz return true; } - SocketError SocketImpl::TranslateErrnoToResolveError(int error) + SocketError SocketImpl::TranslateErrnoToSocketError(int error) { switch (error) { @@ -974,6 +974,9 @@ namespace Nz case ECONNREFUSED: return SocketError_ConnectionRefused; + case EINTR: + return SocketError_Interrupted; + case EMSGSIZE: return SocketError_DatagramSize; diff --git a/src/Nazara/Network/Posix/SocketImpl.hpp b/src/Nazara/Network/Posix/SocketImpl.hpp index 4bd38380d..af22eb8dd 100644 --- a/src/Nazara/Network/Posix/SocketImpl.hpp +++ b/src/Nazara/Network/Posix/SocketImpl.hpp @@ -60,7 +60,7 @@ namespace Nz static std::size_t QueryReceiveBufferSize(SocketHandle handle, SocketError* error = nullptr); static std::size_t QuerySendBufferSize(SocketHandle handle, SocketError* error = nullptr); - static int Poll(PollSocket* fdarray, std::size_t nfds, int timeout, SocketError* error); + static unsigned int Poll(PollSocket* fdarray, std::size_t nfds, int timeout, SocketError* error); static bool Receive(SocketHandle handle, void* buffer, int length, int* read, SocketError* error); static bool ReceiveFrom(SocketHandle handle, void* buffer, int length, IpAddress* from, int* read, SocketError* error); @@ -78,7 +78,7 @@ namespace Nz static bool SetReceiveBufferSize(SocketHandle handle, std::size_t size, SocketError* error = nullptr); static bool SetSendBufferSize(SocketHandle handle, std::size_t size, SocketError* error = nullptr); - static SocketError TranslateErrnoToResolveError(int error); + static SocketError TranslateErrnoToSocketError(int error); static int TranslateNetProtocolToAF(NetProtocol protocol); static int TranslateSocketTypeToSock(SocketType type); diff --git a/src/Nazara/Network/Posix/SocketPollerImpl.cpp b/src/Nazara/Network/Posix/SocketPollerImpl.cpp index 01cc9ffa9..fc100d8eb 100644 --- a/src/Nazara/Network/Posix/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Posix/SocketPollerImpl.cpp @@ -76,9 +76,9 @@ namespace Nz m_readyToWriteSockets.erase(socket); } - int SocketPollerImpl::Wait(int msTimeout, SocketError* error) + unsigned int SocketPollerImpl::Wait(int msTimeout, SocketError* error) { - int activeSockets; + unsigned int activeSockets; // Reset status of sockets activeSockets = SocketImpl::Poll(m_sockets.data(), m_sockets.size(), static_cast(msTimeout), error); @@ -87,7 +87,7 @@ namespace Nz m_readyToWriteSockets.clear(); if (activeSockets > 0U) { - int socketRemaining = activeSockets; + unsigned int socketRemaining = activeSockets; for (PollSocket& entry : m_sockets) { if (!entry.revents) @@ -103,7 +103,7 @@ namespace Nz } else { - NazaraWarning("Socket " + String::Number(entry.fd) + " was returned by WSAPoll without POLLRDNORM nor POLLWRNORM events (events: 0x" + String::Number(entry.revents, 16) + ')'); + NazaraWarning("Socket " + String::Number(entry.fd) + " was returned by poll without POLLRDNORM nor POLLWRNORM events (events: 0x" + String::Number(entry.revents, 16) + ')'); activeSockets--; } diff --git a/src/Nazara/Network/Posix/SocketPollerImpl.hpp b/src/Nazara/Network/Posix/SocketPollerImpl.hpp index 5c4ad1743..294f462a6 100644 --- a/src/Nazara/Network/Posix/SocketPollerImpl.hpp +++ b/src/Nazara/Network/Posix/SocketPollerImpl.hpp @@ -23,13 +23,14 @@ namespace Nz void Clear(); - bool IsReady(SocketHandle socket) const; + bool IsReadyToRead(SocketHandle socket) const; + bool IsReadyToWrite(SocketHandle socket) const; bool IsRegistered(SocketHandle socket) const; bool RegisterSocket(SocketHandle socket, SocketPollEventFlags eventFlags); void UnregisterSocket(SocketHandle socket); - int Wait(int msTimeout, SocketError* error); + unsigned int Wait(int msTimeout, SocketError* error); private: std::unordered_set m_readyToReadSockets; diff --git a/src/Nazara/Network/SocketPoller.cpp b/src/Nazara/Network/SocketPoller.cpp index 50eeb5cdf..20b575b62 100644 --- a/src/Nazara/Network/SocketPoller.cpp +++ b/src/Nazara/Network/SocketPoller.cpp @@ -3,6 +3,7 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include +#include #if defined(NAZARA_PLATFORM_WINDOWS) #include @@ -170,24 +171,33 @@ namespace Nz * Waits a specific/undetermined amount of time until at least one socket part of the SocketPoller becomes ready. * To query the ready state of the registered socket, use the IsReadyToRead or IsReadyToWrite functions. * + * If error is a valid pointer, it will be used to report the last error occurred (if no error occurred, a value of NoError will be reported) + * * \param msTimeout Maximum time to wait in milliseconds, 0 will returns immediately and -1 will block indefinitely + * \param error If valid, this will be used to report the error status from the poller (if no error occurred, a value of NoError will be reported). * - * \return True if at least one socket registered to the poller is ready. + * \return The number of socket reported ready (may be zero if no socket is ready or if an error occurred) * - * \remark It is an error to try to unregister a non-registered socket from a SocketPoller. + * \remark In case of error, a NazaraError is triggered (except for interrupted errors) * * \see IsReady * \see RegisterSocket */ - bool SocketPoller::Wait(int msTimeout) + unsigned int SocketPoller::Wait(int msTimeout, SocketError* error) { - SocketError error; + SocketError waitError; - int readySockets = m_impl->Wait(msTimeout, &error); - if (error != SocketError_NoError) + unsigned int readySockets = m_impl->Wait(msTimeout, &waitError); + + if (error) + *error = waitError; + + if (waitError != SocketError_NoError) { - NazaraError("SocketPoller encountered an error (code: 0x" + String::Number(error, 16) + ')'); - return false; + if (waitError != SocketError_Interrupted) //< Do not log interrupted error + NazaraError("SocketPoller encountered an error (code: 0x" + String::Number(waitError, 16) + "): " + ErrorToString(waitError)); + + return 0; } return readySockets > 0; diff --git a/src/Nazara/Network/Win32/SocketImpl.cpp b/src/Nazara/Network/Win32/SocketImpl.cpp index a0ebe5948..6d2e33f7f 100644 --- a/src/Nazara/Network/Win32/SocketImpl.cpp +++ b/src/Nazara/Network/Win32/SocketImpl.cpp @@ -467,7 +467,7 @@ namespace Nz return code; } - int SocketImpl::Poll(PollSocket* fdarray, std::size_t nfds, int timeout, SocketError* error) + unsigned int SocketImpl::Poll(PollSocket* fdarray, std::size_t nfds, int timeout, SocketError* error) { NazaraAssert(fdarray && nfds > 0, "Invalid fdarray"); @@ -484,10 +484,12 @@ namespace Nz return 0; } + assert(result >= 0); + if (error) *error = SocketError_NoError; - return result; + return static_cast(result); #else NazaraUnused(fdarray); NazaraUnused(nfds); diff --git a/src/Nazara/Network/Win32/SocketImpl.hpp b/src/Nazara/Network/Win32/SocketImpl.hpp index 1aa4a0495..ef49cd14d 100644 --- a/src/Nazara/Network/Win32/SocketImpl.hpp +++ b/src/Nazara/Network/Win32/SocketImpl.hpp @@ -60,7 +60,7 @@ namespace Nz static IpAddress QuerySocketAddress(SocketHandle handle, SocketError* error = nullptr); static std::size_t QuerySendBufferSize(SocketHandle handle, SocketError* error = nullptr); - static int Poll(PollSocket* fdarray, std::size_t nfds, int timeout, SocketError* error); + static unsigned int Poll(PollSocket* fdarray, std::size_t nfds, int timeout, SocketError* error); static bool Receive(SocketHandle handle, void* buffer, int length, int* read, SocketError* error); static bool ReceiveFrom(SocketHandle handle, void* buffer, int length, IpAddress* from, int* read, SocketError* error); diff --git a/src/Nazara/Network/Win32/SocketPollerImpl.cpp b/src/Nazara/Network/Win32/SocketPollerImpl.cpp index 5fa5ac5a2..f6272b246 100644 --- a/src/Nazara/Network/Win32/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Win32/SocketPollerImpl.cpp @@ -130,9 +130,9 @@ namespace Nz #endif } - int SocketPollerImpl::Wait(int msTimeout, SocketError* error) + unsigned int SocketPollerImpl::Wait(int msTimeout, SocketError* error) { - int activeSockets; + unsigned int activeSockets; #if NAZARA_NETWORK_POLL_SUPPORT activeSockets = SocketImpl::Poll(m_sockets.data(), m_sockets.size(), static_cast(msTimeout), error); @@ -187,8 +187,8 @@ namespace Nz tv.tv_sec = static_cast(msTimeout / 1000ULL); tv.tv_usec = static_cast((msTimeout % 1000ULL) * 1000ULL); - activeSockets = ::select(0xDEADBEEF, readSet, writeSet, nullptr, (msTimeout >= 0) ? &tv : nullptr); //< The first argument is ignored on Windows - if (activeSockets == SOCKET_ERROR) + int selectValue = ::select(0xDEADBEEF, readSet, writeSet, nullptr, (msTimeout >= 0) ? &tv : nullptr); //< The first argument is ignored on Windows + if (selectValue == SOCKET_ERROR) { if (error) *error = SocketImpl::TranslateWSAErrorToSocketError(WSAGetLastError()); @@ -196,6 +196,9 @@ namespace Nz return 0; } + assert(selectValue >= 0); + activeSockets = static_cast(selectValue); + if (error) *error = SocketError_NoError; #endif diff --git a/src/Nazara/Network/Win32/SocketPollerImpl.hpp b/src/Nazara/Network/Win32/SocketPollerImpl.hpp index 2dfb32070..611548591 100644 --- a/src/Nazara/Network/Win32/SocketPollerImpl.hpp +++ b/src/Nazara/Network/Win32/SocketPollerImpl.hpp @@ -32,7 +32,7 @@ namespace Nz bool RegisterSocket(SocketHandle socket, SocketPollEventFlags eventFlags); void UnregisterSocket(SocketHandle socket); - int Wait(int msTimeout, SocketError* error); + unsigned int Wait(int msTimeout, SocketError* error); private: #if NAZARA_NETWORK_POLL_SUPPORT From b2185f21381f1a55698808a88b4e59cd0e393dd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 12 Jun 2018 15:11:16 +0200 Subject: [PATCH 060/194] Physics2D/RigidBody2D: Add ClosestPointQuery method --- ChangeLog.md | 2 ++ .../NDK/Components/PhysicsComponent2D.hpp | 2 ++ .../NDK/Components/PhysicsComponent2D.inl | 18 +++++++++++ include/Nazara/Physics2D/RigidBody2D.hpp | 2 ++ src/Nazara/Physics2D/RigidBody2D.cpp | 32 +++++++++++++++++++ 5 files changed, 56 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index a09c07788..5eb093e46 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -114,6 +114,7 @@ Nazara Engine: - Fixed a lot of classes not having their move constructor/assignation operator marked noexcept - ⚠️ SocketPoller::Wait now returns the number of socket marked as ready, and takes an additional optional parameter allowing to query the last error. - SocketPoller will now silently ignore "interrupt errors" +- Added RigidBody2D::ClosestPointQuery Nazara Development Kit: - Added ImageWidget (#139) @@ -164,6 +165,7 @@ Nazara Development Kit: - Fixed EntityOwner move assignment which was losing entity ownership - Add GraphicsComponent:ForEachRenderable method - Fixed GraphicsComponent reflective material count which was not initialized +- Added PhysicsComponent2D::ClosestPointQuery # 0.4: diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.hpp b/SDK/include/NDK/Components/PhysicsComponent2D.hpp index 5c4081652..efd30602a 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.hpp +++ b/SDK/include/NDK/Components/PhysicsComponent2D.hpp @@ -30,6 +30,8 @@ namespace Ndk void AddImpulse(const Nz::Vector2f& impulse, const Nz::Vector2f& point, Nz::CoordSys coordSys = Nz::CoordSys_Global); void AddTorque(float torque); + bool ClosestPointQuery(const Nz::Vector2f& position, Nz::Vector2f* closestPoint, float* closestDistance) const; + Nz::Rectf GetAABB() const; float GetAngularVelocity() const; Nz::Vector2f GetCenterOfGravity(Nz::CoordSys coordSys = Nz::CoordSys_Local) const; diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.inl b/SDK/include/NDK/Components/PhysicsComponent2D.inl index 03f98bf0b..b6628467d 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.inl +++ b/SDK/include/NDK/Components/PhysicsComponent2D.inl @@ -2,6 +2,7 @@ // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequisites.hpp +#include #include namespace Ndk @@ -97,6 +98,23 @@ namespace Ndk m_object->AddTorque(torque); } + /*! + * \brief Finds the closest point on the entity relative to a position + * \return True if such a point exists (will return false if no collider exists) + * + * \param position The starting point which will be used for the query + * \param closestPoint The closest point on entity surface + * \param closestDistance The distance between the closest point and the starting point, may be negative if starting point is inside the entity + * + * \remark Produces a NazaraAssert if the physics object is invalid + */ + inline bool PhysicsComponent2D::ClosestPointQuery(const Nz::Vector2f& position, Nz::Vector2f* closestPoint, float* closestDistance) const + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->ClosestPointQuery(position, closestPoint, closestDistance); + } + /*! * \brief Gets the AABB of the physics object * \return AABB of the object diff --git a/include/Nazara/Physics2D/RigidBody2D.hpp b/include/Nazara/Physics2D/RigidBody2D.hpp index 4ca95717f..3b74a1943 100644 --- a/include/Nazara/Physics2D/RigidBody2D.hpp +++ b/include/Nazara/Physics2D/RigidBody2D.hpp @@ -36,6 +36,8 @@ namespace Nz void AddImpulse(const Vector2f& impulse, const Vector2f& point, CoordSys coordSys = CoordSys_Global); void AddTorque(float torque); + bool ClosestPointQuery(const Nz::Vector2f& position, Nz::Vector2f* closestPoint = nullptr, float* closestDistance = nullptr) const; + void EnableSimulation(bool simulation); Rectf GetAABB() const; diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index 6e61af384..c2cb31c4f 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include namespace Nz @@ -127,6 +128,37 @@ namespace Nz cpBodySetTorque(m_handle, cpBodyGetTorque(m_handle) + ToRadians(torque)); } + bool RigidBody2D::ClosestPointQuery(const Nz::Vector2f& position, Nz::Vector2f* closestPoint, float* closestDistance) const + { + cpVect pos = cpv(cpFloat(position.x), cpFloat(position.y)); + + float minDistance = std::numeric_limits::infinity(); + Nz::Vector2f closest; + for (cpShape* shape : m_shapes) + { + cpPointQueryInfo result; + cpShapePointQuery(shape, pos, &result); + + float resultDistance = float(result.distance); + if (resultDistance < minDistance) + { + closest.Set(float(result.point.x), float(result.point.y)); + minDistance = resultDistance; + } + } + + if (std::isinf(minDistance)) + return false; + + if (closestPoint) + *closestPoint = closest; + + if (minDistance) + *closestDistance = minDistance; + + return true; + } + void RigidBody2D::EnableSimulation(bool simulation) { if (m_isRegistered != simulation) From 41e2d3e448201ed34c12841eeea3578a315c844d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 15 Jun 2018 14:13:18 +0200 Subject: [PATCH 061/194] Graphics/Material: Add EnableVertexColor temporary --- include/Nazara/Graphics/Material.hpp | 2 ++ include/Nazara/Graphics/Material.inl | 28 ++++++++++++++++++++ include/Nazara/Graphics/MaterialPipeline.hpp | 1 + include/Nazara/Graphics/MaterialPipeline.inl | 2 ++ src/Nazara/Graphics/MaterialPipeline.cpp | 2 +- 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/include/Nazara/Graphics/Material.hpp b/include/Nazara/Graphics/Material.hpp index 8baab7e62..9903553a5 100644 --- a/include/Nazara/Graphics/Material.hpp +++ b/include/Nazara/Graphics/Material.hpp @@ -83,6 +83,7 @@ namespace Nz inline void EnableShadowCasting(bool castShadows); inline void EnableShadowReceive(bool receiveShadows); inline void EnableStencilTest(bool stencilTest); + inline void EnableVertexColor(bool vertexColor); inline void EnsurePipelineUpdate() const; @@ -121,6 +122,7 @@ namespace Nz inline bool HasHeightMap() const; inline bool HasNormalMap() const; inline bool HasSpecularMap() const; + inline bool HasVertexColor() const; inline bool IsAlphaTestEnabled() const; inline bool IsBlendingEnabled() const; diff --git a/include/Nazara/Graphics/Material.inl b/include/Nazara/Graphics/Material.inl index 3831519a2..c6e56db84 100644 --- a/include/Nazara/Graphics/Material.inl +++ b/include/Nazara/Graphics/Material.inl @@ -392,6 +392,25 @@ namespace Nz InvalidatePipeline(); } + /*! + * \brief Enable/Disable vertex coloring on this material + * + * This is a temporary option, until the new material pipeline system is ready, allowing to enable vertex coloring. + * This option only works with meshes using vertex colors. + * + * \param vertexColor Defines if this material will use vertex color or not + * + * \remark Invalidates the pipeline + * + * \see HasVertexColor + */ + inline void Material::EnableVertexColor(bool vertexColor) + { + m_pipelineInfo.hasVertexColor = vertexColor; + + InvalidatePipeline(); + } + /*! * \brief Ensures the pipeline gets updated * @@ -756,6 +775,15 @@ namespace Nz return m_specularMap.IsValid(); } + /*! + * \brief Checks whether this material uses vertex coloring + * \return true If it is the case + */ + inline bool Material::HasVertexColor() const + { + return m_pipelineInfo.hasVertexColor; + } + /*! * \brief Checks whether this material has alpha test enabled * \return true If it is the case diff --git a/include/Nazara/Graphics/MaterialPipeline.hpp b/include/Nazara/Graphics/MaterialPipeline.hpp index 75e5731e0..ef3e1eafb 100644 --- a/include/Nazara/Graphics/MaterialPipeline.hpp +++ b/include/Nazara/Graphics/MaterialPipeline.hpp @@ -26,6 +26,7 @@ namespace Nz bool hasHeightMap = false; bool hasNormalMap = false; bool hasSpecularMap = false; + bool hasVertexColor = false; bool reflectionMapping = false; bool shadowReceive = true; diff --git a/include/Nazara/Graphics/MaterialPipeline.inl b/include/Nazara/Graphics/MaterialPipeline.inl index bc7ca1b72..2df585e28 100644 --- a/include/Nazara/Graphics/MaterialPipeline.inl +++ b/include/Nazara/Graphics/MaterialPipeline.inl @@ -71,6 +71,7 @@ namespace Nz NazaraPipelineBoolMember(hasHeightMap); NazaraPipelineBoolMember(hasNormalMap); NazaraPipelineBoolMember(hasSpecularMap); + NazaraPipelineBoolMember(hasVertexColor); NazaraPipelineBoolMember(reflectionMapping); NazaraPipelineBoolMember(shadowReceive); @@ -127,6 +128,7 @@ namespace std NazaraPipelineBoolMember(hasHeightMap); NazaraPipelineBoolMember(hasNormalMap); NazaraPipelineBoolMember(hasSpecularMap); + NazaraPipelineBoolMember(hasVertexColor); NazaraPipelineBoolMember(reflectionMapping); NazaraPipelineBoolMember(shadowReceive); diff --git a/src/Nazara/Graphics/MaterialPipeline.cpp b/src/Nazara/Graphics/MaterialPipeline.cpp index 6f2d5f173..743984783 100644 --- a/src/Nazara/Graphics/MaterialPipeline.cpp +++ b/src/Nazara/Graphics/MaterialPipeline.cpp @@ -98,7 +98,7 @@ namespace Nz list.SetParameter("FLAG_DEFERRED", static_cast((flags & ShaderFlags_Deferred) != 0)); list.SetParameter("FLAG_INSTANCING", static_cast((flags & ShaderFlags_Instancing) != 0)); list.SetParameter("FLAG_TEXTUREOVERLAY", static_cast((flags & ShaderFlags_TextureOverlay) != 0)); - list.SetParameter("FLAG_VERTEXCOLOR", static_cast((flags & ShaderFlags_VertexColor) != 0)); + list.SetParameter("FLAG_VERTEXCOLOR", m_pipelineInfo.hasVertexColor || static_cast((flags & ShaderFlags_VertexColor) != 0)); Instance& instance = m_instances[flags]; instance.uberInstance = m_pipelineInfo.uberShader->Get(list); From 8cdc36c948886518d126361936b9b7d3254d9e71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 15 Jun 2018 14:15:23 +0200 Subject: [PATCH 062/194] Graphics/Material: Add parameter for vertex color --- include/Nazara/Utility/MaterialData.hpp | 1 + src/Nazara/Graphics/Material.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/include/Nazara/Utility/MaterialData.hpp b/include/Nazara/Utility/MaterialData.hpp index c2634d92c..5d82400d7 100644 --- a/include/Nazara/Utility/MaterialData.hpp +++ b/include/Nazara/Utility/MaterialData.hpp @@ -60,6 +60,7 @@ namespace Nz static constexpr const char* StencilTest = "MatStencilTest"; static constexpr const char* StencilZFail = "MatStencilZFail"; static constexpr const char* Transform = "MatTransform"; + static constexpr const char* VertexColor = "MatVertexColor"; }; } diff --git a/src/Nazara/Graphics/Material.cpp b/src/Nazara/Graphics/Material.cpp index e88ad6100..37ab5afd7 100644 --- a/src/Nazara/Graphics/Material.cpp +++ b/src/Nazara/Graphics/Material.cpp @@ -183,6 +183,9 @@ namespace Nz if (matData.GetBooleanParameter(MaterialData::StencilTest, &isEnabled)) EnableStencilTest(isEnabled); + if (matData.GetBooleanParameter(MaterialData::VertexColor, &isEnabled)) + EnableVertexColor(isEnabled); + // Samplers if (matData.GetIntegerParameter(MaterialData::DiffuseAnisotropyLevel, &iValue)) m_diffuseSampler.SetAnisotropyLevel(static_cast(iValue)); @@ -296,6 +299,7 @@ namespace Nz matData->SetParameter(MaterialData::FaceCulling, IsFaceCullingEnabled()); matData->SetParameter(MaterialData::ScissorTest, IsScissorTestEnabled()); matData->SetParameter(MaterialData::StencilTest, IsStencilTestEnabled()); + matData->SetParameter(MaterialData::VertexColor, HasVertexColor()); // Samplers matData->SetParameter(MaterialData::DiffuseAnisotropyLevel, static_cast(GetDiffuseSampler().GetAnisotropicLevel())); From 858d0da5f221f20718b036410e5a53bd7372bdfe Mon Sep 17 00:00:00 2001 From: S6066 Date: Sun, 17 Jun 2018 18:54:02 +0200 Subject: [PATCH 063/194] Fix Sprite & GraphicsComponent copy constructors leaving some members uninitialized (#166) * Fix Sprite copy constructor (corner colors) * Also add change to changelog * [GraphicsComponent] Bugfix: Initialize m_scissorRect in copy ctor * Add change to changelog * Move GraphicsComponent fix change to correct section in Changelog * Use default copy constructor for Sprite --- ChangeLog.md | 2 ++ SDK/include/NDK/Components/GraphicsComponent.inl | 1 + include/Nazara/Graphics/Sprite.hpp | 2 +- include/Nazara/Graphics/Sprite.inl | 15 --------------- 4 files changed, 4 insertions(+), 16 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 5eb093e46..1a5abbb6b 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -115,6 +115,7 @@ Nazara Engine: - ⚠️ SocketPoller::Wait now returns the number of socket marked as ready, and takes an additional optional parameter allowing to query the last error. - SocketPoller will now silently ignore "interrupt errors" - Added RigidBody2D::ClosestPointQuery +- Fix Sprite copy constructor not copying corner colors Nazara Development Kit: - Added ImageWidget (#139) @@ -166,6 +167,7 @@ Nazara Development Kit: - Add GraphicsComponent:ForEachRenderable method - Fixed GraphicsComponent reflective material count which was not initialized - Added PhysicsComponent2D::ClosestPointQuery +- Fix GraphicsComponent copy constructor not copying scissor rect # 0.4: diff --git a/SDK/include/NDK/Components/GraphicsComponent.inl b/SDK/include/NDK/Components/GraphicsComponent.inl index adf653351..69be82ba0 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -26,6 +26,7 @@ namespace Ndk m_reflectiveMaterialCount(0), m_boundingVolume(graphicsComponent.m_boundingVolume), m_transformMatrix(graphicsComponent.m_transformMatrix), + m_scissorRect(graphicsComponent.m_scissorRect), m_boundingVolumeUpdated(graphicsComponent.m_boundingVolumeUpdated), m_transformMatrixUpdated(graphicsComponent.m_transformMatrixUpdated) { diff --git a/include/Nazara/Graphics/Sprite.hpp b/include/Nazara/Graphics/Sprite.hpp index 6548f461a..587060467 100644 --- a/include/Nazara/Graphics/Sprite.hpp +++ b/include/Nazara/Graphics/Sprite.hpp @@ -29,7 +29,7 @@ namespace Nz inline Sprite(); inline Sprite(MaterialRef material); inline Sprite(Texture* texture); - inline Sprite(const Sprite& sprite); + Sprite(const Sprite&) = default; Sprite(Sprite&&) = delete; ~Sprite() = default; diff --git a/include/Nazara/Graphics/Sprite.inl b/include/Nazara/Graphics/Sprite.inl index a296f5d61..7412793b7 100644 --- a/include/Nazara/Graphics/Sprite.inl +++ b/include/Nazara/Graphics/Sprite.inl @@ -50,21 +50,6 @@ namespace Nz SetTexture(texture, true); } - /*! - * \brief Constructs a Sprite object by assignation - * - * \param sprite Sprite to copy into this - */ - - inline Sprite::Sprite(const Sprite& sprite) : - InstancedRenderable(sprite), - m_color(sprite.m_color), - m_textureCoords(sprite.m_textureCoords), - m_size(sprite.m_size), - m_origin(sprite.m_origin) - { - } - /*! * \brief Gets the color of the sprite * From da044bd21ccbae6971321da229809ceabb5f2bae Mon Sep 17 00:00:00 2001 From: S6066 Date: Sun, 17 Jun 2018 19:04:15 +0200 Subject: [PATCH 064/194] Make lua binding for std::vector (#164) * Make LuaImplQueryArg impl for std::vector * Fix shadowed argument * Make unit tests * Bugfix * Bugfix, for real this time * We didn't need these tests anyway * Revert "We didn't need these tests anyway" This reverts commit be88d4496a9cf62beb4d3ce1f30825589a4bacb2. * Add change to changelog * Update ChangeLog.md * Bugfix & use CallOnExit to pop stack --- ChangeLog.md | 2 ++ include/Nazara/Lua/LuaState.inl | 29 +++++++++++++++++++++++++++++ tests/Engine/Lua/LuaState.cpp | 29 +++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 1a5abbb6b..fea6b4033 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -107,6 +107,8 @@ Nazara Engine: - Added AbstractViewer::Project and AbstractViewer::Unproject methods - Added AbstractViewer::ProjectDepth method - Fixed SocketPoller not be able to recover from some errors (like invalid sockets and such) +- Add LuaImplQuery implementation for std::vector +- Fixed LuaState::PushGlobal & LuaState::PushField to copy the object before moving it - ⚠️ Replaced currentBitPos and currentByte fields by [read|write][BitPos][Byte] to handle properly bit reading/writing. - InstancedRenderable::SetMaterial methods are now public. - Fixed Model copy constructor not copying materials diff --git a/include/Nazara/Lua/LuaState.inl b/include/Nazara/Lua/LuaState.inl index 7dcc4e36f..3d6f5ae1e 100644 --- a/include/Nazara/Lua/LuaState.inl +++ b/include/Nazara/Lua/LuaState.inl @@ -3,6 +3,7 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include +#include #include #include #include @@ -159,6 +160,34 @@ namespace Nz return LuaImplQueryArg(instance, index, arg, defValue, TypeTag()); } + template + unsigned int LuaImplQueryArg(const LuaState& instance, int index, std::vector* container, TypeTag>) + { + instance.CheckType(index, Nz::LuaType_Table); + std::size_t pos = 1; + + for (;;) + { + Nz::CallOnExit popStack { [&instance]() { instance.Pop(); } }; + instance.PushInteger(pos++); + + if (instance.GetTable() == Nz::LuaType_Nil) + break; + + T arg {}; + + if (LuaImplQueryArg(instance, -1, &arg, TypeTag()) != 1) + { + instance.Error("Type needs more than one place to be initialized"); + return 0; + } + + container->push_back(arg); + } + + return 1; + } + // Function returns inline int LuaImplReplyVal(const LuaState& instance, bool val, TypeTag) { diff --git a/tests/Engine/Lua/LuaState.cpp b/tests/Engine/Lua/LuaState.cpp index ef2965517..430927d98 100644 --- a/tests/Engine/Lua/LuaState.cpp +++ b/tests/Engine/Lua/LuaState.cpp @@ -183,5 +183,34 @@ SCENARIO("LuaState", "[LUA][LUASTATE]") CHECK(luaInstance.ToNumber(1) == Approx(-4.09).margin(0.1)); } } + + WHEN("We push a std::vector locally") + { + std::vector vec { 1, 5, -8, 6, -4 }; + luaInstance.Push(std::vector { vec }); + + THEN("We can retrieve it with correct values") + { + int index = 1; + std::vector otherVec = luaInstance.Check>(&index); + + for (std::size_t i {}; i < otherVec.size(); ++i) + CHECK(otherVec[i] == vec[i]); + } + } + + WHEN("We push a std::vector globally") + { + std::vector vec { 1, 5, -8, 6, -4 }; + luaInstance.PushGlobal("vector", std::vector { vec }); + + THEN("We can retrieve it with correct values") + { + std::vector otherVec = luaInstance.CheckGlobal>("vector"); + + for (std::size_t i {}; i < otherVec.size(); ++i) + CHECK(otherVec[i] == vec[i]); + } + } } } From 456a9258da67477cae71ba6b4d48ac71614e6228 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 24 Jun 2018 20:29:20 +0200 Subject: [PATCH 065/194] Lua/LuaState: Fix std::vector query code --- include/Nazara/Lua/LuaState.inl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/Nazara/Lua/LuaState.inl b/include/Nazara/Lua/LuaState.inl index 3d6f5ae1e..136220bf7 100644 --- a/include/Nazara/Lua/LuaState.inl +++ b/include/Nazara/Lua/LuaState.inl @@ -166,12 +166,13 @@ namespace Nz instance.CheckType(index, Nz::LuaType_Table); std::size_t pos = 1; + container->clear(); for (;;) { Nz::CallOnExit popStack { [&instance]() { instance.Pop(); } }; instance.PushInteger(pos++); - if (instance.GetTable() == Nz::LuaType_Nil) + if (instance.GetTable(index) == Nz::LuaType_Nil) break; T arg {}; From bf37688b1151101f049211151b3a1ebfef6c5a5e Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 24 Jun 2018 21:49:51 +0200 Subject: [PATCH 066/194] Lua/LuaState: Fix std::vector query for good --- include/Nazara/Lua/LuaState.inl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/Nazara/Lua/LuaState.inl b/include/Nazara/Lua/LuaState.inl index 136220bf7..97a0827b0 100644 --- a/include/Nazara/Lua/LuaState.inl +++ b/include/Nazara/Lua/LuaState.inl @@ -172,11 +172,11 @@ namespace Nz Nz::CallOnExit popStack { [&instance]() { instance.Pop(); } }; instance.PushInteger(pos++); - if (instance.GetTable(index) == Nz::LuaType_Nil) + int tableIndex = (index < 0) ? index - 1 : index; + if (instance.GetTable(tableIndex) == Nz::LuaType_Nil) break; - T arg {}; - + T arg; if (LuaImplQueryArg(instance, -1, &arg, TypeTag()) != 1) { instance.Error("Type needs more than one place to be initialized"); From 78adc11323a540b6c3163d469cfe5bc8eea6b3d5 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 24 Jun 2018 22:04:48 +0200 Subject: [PATCH 067/194] Graphics/TileMap: Fix warning --- include/Nazara/Graphics/TileMap.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Nazara/Graphics/TileMap.hpp b/include/Nazara/Graphics/TileMap.hpp index 6648a6598..b096b5948 100644 --- a/include/Nazara/Graphics/TileMap.hpp +++ b/include/Nazara/Graphics/TileMap.hpp @@ -29,7 +29,7 @@ namespace Nz struct Tile; inline TileMap(const Nz::Vector2ui& mapSize, const Nz::Vector2f& tileSize, std::size_t materialCount = 1); - TileMap(const TileMap& TileMap) = default; + TileMap(const TileMap&) = default; TileMap(TileMap&&) = delete; ~TileMap() = default; From f9c5867d72bca57380d04712029af0f3f62f66e6 Mon Sep 17 00:00:00 2001 From: S6066 Date: Thu, 28 Jun 2018 16:11:54 +0200 Subject: [PATCH 068/194] Fix cursor when switching demo in DemoParticles (#168) * fix cursor * whoopsie --- examples/Particles/SpacebattleDemo.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/Particles/SpacebattleDemo.cpp b/examples/Particles/SpacebattleDemo.cpp index 8fa72bfff..0fe08d8f3 100644 --- a/examples/Particles/SpacebattleDemo.cpp +++ b/examples/Particles/SpacebattleDemo.cpp @@ -669,6 +669,8 @@ void SpacebattleExample::Enter(Ndk::StateMachine& fsm) void SpacebattleExample::Leave(Ndk::StateMachine& fsm) { m_ambientMusic.Stop(); + m_onMouseMoved.Disconnect(); + m_shared.target->SetCursor(Nz::SystemCursor_Default); m_shared.world3D->RemoveSystem(); m_shared.world3D->RemoveSystem(); m_turretFireSound.Stop(); From 217d971fe72b250a085a1b7843a879893bf1f6cd Mon Sep 17 00:00:00 2001 From: Faymoon Date: Thu, 28 Jun 2018 16:12:12 +0200 Subject: [PATCH 069/194] fix launch error for premake (#167) * fix error of launch for premake * fix launch error for premake * fix launch error for premake * fix launch error for premake * fix launch error for premake * fix launch error for premake * Update Generate_UnicodeData.bat * fix launch error for premake * fix launch error for premake * fix launch error for premake --- build/Build_CodeBlocks.bat | 2 +- build/Build_CodeLite.bat | 2 +- build/Build_VS2015.bat | 2 +- build/Build_VS2017.bat | 2 +- build/EncodeResources.bat | 4 ++-- build/Generate_GlobalIncludes.bat | 4 ++-- build/Generate_UnicodeData.bat | 4 ++-- build/Package_AutoDetect.bat | 4 ++-- build/Package_MSVC.bat | 4 ++-- build/Package_MinGW.bat | 4 ++-- 10 files changed, 16 insertions(+), 16 deletions(-) diff --git a/build/Build_CodeBlocks.bat b/build/Build_CodeBlocks.bat index 5e6c23c44..f660c144d 100644 --- a/build/Build_CodeBlocks.bat +++ b/build/Build_CodeBlocks.bat @@ -1 +1 @@ -premake5 codeblocks \ No newline at end of file +.\premake5.exe codeblocks diff --git a/build/Build_CodeLite.bat b/build/Build_CodeLite.bat index 170e7a451..2a1634776 100644 --- a/build/Build_CodeLite.bat +++ b/build/Build_CodeLite.bat @@ -1 +1 @@ -premake5 codelite \ No newline at end of file +.\premake5.exe codelite diff --git a/build/Build_VS2015.bat b/build/Build_VS2015.bat index 6d0726faf..c74550817 100644 --- a/build/Build_VS2015.bat +++ b/build/Build_VS2015.bat @@ -1 +1 @@ -premake5 vs2015 \ No newline at end of file +.\premake5.exe vs2015 diff --git a/build/Build_VS2017.bat b/build/Build_VS2017.bat index b569c559d..51c0417d0 100644 --- a/build/Build_VS2017.bat +++ b/build/Build_VS2017.bat @@ -1 +1 @@ -premake5 vs2017 \ No newline at end of file +.\premake5.exe vs2017 diff --git a/build/EncodeResources.bat b/build/EncodeResources.bat index 8e4abde48..b7dc0f860 100644 --- a/build/EncodeResources.bat +++ b/build/EncodeResources.bat @@ -1,2 +1,2 @@ -premake5 encoderesources -pause \ No newline at end of file +.\premake5.exe encoderesources +pause diff --git a/build/Generate_GlobalIncludes.bat b/build/Generate_GlobalIncludes.bat index a78069501..df132e9ad 100644 --- a/build/Generate_GlobalIncludes.bat +++ b/build/Generate_GlobalIncludes.bat @@ -1,2 +1,2 @@ -premake5 generateheaders -pause \ No newline at end of file +.\premake5.exe generateheaders +pause diff --git a/build/Generate_UnicodeData.bat b/build/Generate_UnicodeData.bat index 75ef2d7da..cff81bd31 100644 --- a/build/Generate_UnicodeData.bat +++ b/build/Generate_UnicodeData.bat @@ -1,2 +1,2 @@ -premake5 parseunicode -pause \ No newline at end of file +.\premake5.exe parseunicode +pause diff --git a/build/Package_AutoDetect.bat b/build/Package_AutoDetect.bat index 32a52470b..f86a8c6e5 100644 --- a/build/Package_AutoDetect.bat +++ b/build/Package_AutoDetect.bat @@ -1,2 +1,2 @@ -premake5 package -pause \ No newline at end of file +.\premake5.exe package +pause diff --git a/build/Package_MSVC.bat b/build/Package_MSVC.bat index 0367ff7df..c39f1cd6c 100644 --- a/build/Package_MSVC.bat +++ b/build/Package_MSVC.bat @@ -1,2 +1,2 @@ -premake5 --pack-libdir=msvc package -pause \ No newline at end of file +.\premake5.exe --pack-libdir=msvc package +pause diff --git a/build/Package_MinGW.bat b/build/Package_MinGW.bat index 823c5e4ce..21d4c01fc 100644 --- a/build/Package_MinGW.bat +++ b/build/Package_MinGW.bat @@ -1,2 +1,2 @@ -premake5 --pack-libdir=mingw package -pause \ No newline at end of file +.\premake5.exe --pack-libdir=mingw package +pause From eeaaebb15c871f31eac3b8c3a3387b177d8c9c22 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 1 Jul 2018 00:36:59 +0200 Subject: [PATCH 070/194] Core: Add ObjectLibrary::Clear --- ChangeLog.md | 1 + include/Nazara/Core/ObjectLibrary.hpp | 2 ++ include/Nazara/Core/ObjectLibrary.inl | 14 ++++++++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index fea6b4033..17a0a1521 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -118,6 +118,7 @@ Nazara Engine: - SocketPoller will now silently ignore "interrupt errors" - Added RigidBody2D::ClosestPointQuery - Fix Sprite copy constructor not copying corner colors +- Added ObjectLibrary::Clear method Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Core/ObjectLibrary.hpp b/include/Nazara/Core/ObjectLibrary.hpp index a13fbc3e6..8528f358d 100644 --- a/include/Nazara/Core/ObjectLibrary.hpp +++ b/include/Nazara/Core/ObjectLibrary.hpp @@ -23,6 +23,8 @@ namespace Nz ObjectLibrary() = delete; ~ObjectLibrary() = delete; + static void Clear(); + static ObjectRef Get(const String& name); static bool Has(const String& name); diff --git a/include/Nazara/Core/ObjectLibrary.inl b/include/Nazara/Core/ObjectLibrary.inl index b5384a2a7..83686e04f 100644 --- a/include/Nazara/Core/ObjectLibrary.inl +++ b/include/Nazara/Core/ObjectLibrary.inl @@ -2,6 +2,7 @@ // This file is part of the "Nazara Engine - Core module" // For conditions of distribution and use, see copyright notice in Config.hpp +#include #include #include @@ -9,10 +10,19 @@ namespace Nz { /*! * \ingroup core - * \class Nz::ObjectRef - * \brief Core class that represents a reference to an object + * \class Nz::ObjectLibrary + * \brief Core class containing a collection of objects */ + /*! + * \brief Clears the library, freeing every object it contains + */ + template + void ObjectLibrary::Clear() + { + Type::s_library.clear(); + } + /*! * \brief Gets the ObjectRef object by name * \return Optional reference From ea572520819e2eb00e29a0d0d162eea6aebf4db6 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 1 Jul 2018 20:36:42 +0200 Subject: [PATCH 071/194] Graphics/Model: Fix material copy for good --- include/Nazara/Graphics/Model.inl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/Nazara/Graphics/Model.inl b/include/Nazara/Graphics/Model.inl index 1b0055cf3..ee0ce7a41 100644 --- a/include/Nazara/Graphics/Model.inl +++ b/include/Nazara/Graphics/Model.inl @@ -25,6 +25,14 @@ namespace Nz InstancedRenderable(model) { SetMesh(model.m_mesh); + + // Since SetMesh does reset materials, we need reapply them + SetSkinCount(model.GetSkinCount()); + for (std::size_t skin = 0; skin < model.GetSkinCount(); ++skin) + { + for (std::size_t matIndex = 0; matIndex < model.GetMaterialCount(); ++matIndex) + SetMaterial(skin, matIndex, model.GetMaterial(skin, matIndex)); + } } /*! From bb0456ffed9210382cea58a12244a2d6eb0a14ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Mon, 2 Jul 2018 17:48:51 +0200 Subject: [PATCH 072/194] Remove useless namespace prefix --- include/Nazara/Network/NetPacket.inl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Nazara/Network/NetPacket.inl b/include/Nazara/Network/NetPacket.inl index eb68d1e53..7cd78b529 100644 --- a/include/Nazara/Network/NetPacket.inl +++ b/include/Nazara/Network/NetPacket.inl @@ -195,7 +195,7 @@ namespace Nz * \param packet NetPacket to move in this */ - inline NetPacket& Nz::NetPacket::operator=(NetPacket&& packet) + inline NetPacket& NetPacket::operator=(NetPacket&& packet) { FreeStream(); From 2fcea6b79fa426d6965202424a6c37085a1c3f5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Mon, 2 Jul 2018 17:53:49 +0200 Subject: [PATCH 073/194] Core/StackArray: Moved StackArray class to its own header --- ChangeLog.md | 2 + include/Nazara/Core/MemoryHelper.hpp | 75 +-------- include/Nazara/Core/MemoryHelper.inl | 183 --------------------- include/Nazara/Core/StackArray.hpp | 93 +++++++++++ include/Nazara/Core/StackArray.inl | 208 ++++++++++++++++++++++++ src/Nazara/Core/Posix/DirectoryImpl.cpp | 4 +- src/Nazara/Network/Posix/SocketImpl.cpp | 6 +- src/Nazara/Network/Win32/SocketImpl.cpp | 6 +- src/Nazara/Physics2D/PhysWorld2D.cpp | 4 +- src/Nazara/Physics3D/PhysWorld3D.cpp | 4 +- src/Nazara/Renderer/Renderer.cpp | 4 +- 11 files changed, 318 insertions(+), 271 deletions(-) create mode 100644 include/Nazara/Core/StackArray.hpp create mode 100644 include/Nazara/Core/StackArray.inl diff --git a/ChangeLog.md b/ChangeLog.md index 17a0a1521..8690c48e0 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -119,6 +119,8 @@ Nazara Engine: - Added RigidBody2D::ClosestPointQuery - Fix Sprite copy constructor not copying corner colors - Added ObjectLibrary::Clear method +- ⚠️ StackArray class and macro was moved from Core/MemoryHelper.hpp to Core/StackArray.hpp +- ⚠️ Renamed NazaraStackAllocation[NoInit] macro to NazaraStackArray[NoInit] Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Core/MemoryHelper.hpp b/include/Nazara/Core/MemoryHelper.hpp index 6452c7562..9d4a71ee4 100644 --- a/include/Nazara/Core/MemoryHelper.hpp +++ b/include/Nazara/Core/MemoryHelper.hpp @@ -16,6 +16,7 @@ #define NAZARA_ALLOCA_SUPPORT #elif defined(NAZARA_COMPILER_CLANG) || defined(NAZARA_COMPILER_GCC) || defined(NAZARA_COMPILER_INTEL) + #include // with Clang/GCC, using alloca with a size of zero does nothing good @@ -24,16 +25,7 @@ #endif -#ifdef NAZARA_ALLOCA_SUPPORT - #define NazaraStackAllocation(T, size) Nz::StackArray(static_cast(NAZARA_ALLOCA((size) * sizeof(T))), size) - #define NazaraStackAllocationNoInit(T, size) Nz::StackArray(static_cast(NAZARA_ALLOCA((size) * sizeof(T))), size, Nz::NoInitTag()) -#else - #define NazaraStackAllocation(T, size) Nz::StackArray(static_cast(Nz::OperatorNew((size) * sizeof(T))), size) - #define NazaraStackAllocationNoInit(T, size) Nz::StackArray(static_cast(Nz::OperatorNew((size) * sizeof(T))), size, Nz::NoInitTag()) -#endif - #include -#include namespace Nz { @@ -45,71 +37,6 @@ namespace Nz template void PlacementDestroy(T* ptr); - - struct NoInitTag {}; - - template - class StackArray - { - public: - using value_type = T; - using const_iterator = const value_type*; - using const_pointer = const value_type*; - using const_reference = const value_type&; - using const_reverse_iterator = std::reverse_iterator; - using difference_type = std::ptrdiff_t; - using iterator = value_type*; - using pointer = value_type*; - using reference = value_type&; - using reverse_iterator = std::reverse_iterator; - using size_type = std::size_t; - - StackArray(T* stackMemory, std::size_t size); - StackArray(T* stackMemory, std::size_t size, NoInitTag); - ~StackArray(); - - reference back(); - const_reference back() const; - - iterator begin() noexcept; - const_iterator begin() const noexcept; - - const_iterator cbegin() const noexcept; - const_iterator cend() const noexcept; - const_reverse_iterator crbegin() const noexcept; - const_reverse_iterator crend() const noexcept; - - T* data() noexcept; - const T* data() const noexcept; - - bool empty() const noexcept; - - iterator end() noexcept; - const_iterator end() const noexcept; - - void fill(const T& value); - - reference front() noexcept; - const_reference front() const noexcept; - - size_type max_size() const noexcept; - - reverse_iterator rbegin() noexcept; - const_reverse_iterator rbegin() const noexcept; - - reverse_iterator rend() noexcept; - const_reverse_iterator rend() const noexcept; - - size_type size() const noexcept; - - reference operator[](size_type pos); - const_reference operator[](size_type pos) const; - - private: - std::size_t m_size; - T* m_ptr; - }; - } #include diff --git a/include/Nazara/Core/MemoryHelper.inl b/include/Nazara/Core/MemoryHelper.inl index dfab05f15..afe2eca6b 100644 --- a/include/Nazara/Core/MemoryHelper.inl +++ b/include/Nazara/Core/MemoryHelper.inl @@ -11,10 +11,8 @@ #include #include -#include #include #include -#include #include namespace Nz @@ -79,187 +77,6 @@ namespace Nz if (ptr) ptr->~T(); } - - /*! - * \ingroup core - * \class Nz::StackArray - * \brief Core class that represents a stack-allocated (if alloca is present) array - */ - - template - StackArray::StackArray(T* stackMemory, std::size_t size) : - m_size(size), - m_ptr(stackMemory) - { - for (std::size_t i = 0; i < m_size; ++i) - PlacementNew(&m_ptr[i]); - } - - template - StackArray::StackArray(T* stackMemory, std::size_t size, NoInitTag) : - m_size(size), - m_ptr(stackMemory) - { - } - - template - StackArray::~StackArray() - { - for (std::size_t i = 0; i < m_size; ++i) - m_ptr[i].~T(); - - #ifndef NAZARA_ALLOCA_SUPPORT - OperatorDelete(m_ptr); - #endif - } - - template - typename StackArray::reference StackArray::back() - { - assert(m_size != 0); - return m_ptr[m_size - 1]; - } - - template - typename StackArray::const_reference StackArray::back() const - { - assert(m_size != 0); - return m_ptr[m_size - 1]; - } - - template - typename StackArray::iterator StackArray::begin() noexcept - { - return iterator(&m_ptr[0]); - } - - template - typename StackArray::const_iterator StackArray::begin() const noexcept - { - return const_iterator(&m_ptr[0]); - } - - template - typename StackArray::const_iterator StackArray::cbegin() const noexcept - { - return const_iterator(&m_ptr[0]); - } - - template - typename StackArray::const_iterator StackArray::cend() const noexcept - { - return const_iterator(&m_ptr[m_size]); - } - - template - typename StackArray::const_reverse_iterator StackArray::crbegin() const noexcept - { - return const_reverse_iterator(&m_ptr[m_size]); - } - - template - typename StackArray::const_reverse_iterator StackArray::crend() const noexcept - { - return const_reverse_iterator(&m_ptr[0]); - } - - template - T* StackArray::data() noexcept - { - return m_ptr; - } - - template - const T* StackArray::data() const noexcept - { - return m_ptr; - } - - template - bool StackArray::empty() const noexcept - { - return m_size == 0; - } - - template - typename StackArray::iterator StackArray::end() noexcept - { - return iterator(&m_ptr[m_size]); - } - - template - typename StackArray::const_iterator StackArray::end() const noexcept - { - return const_iterator(&m_ptr[m_size]); - } - - template - void StackArray::fill(const T& value) - { - std::fill(begin(), end(), value); - } - - template - typename StackArray::reference StackArray::front() noexcept - { - return m_ptr[0]; - } - - template - typename StackArray::const_reference StackArray::front() const noexcept - { - return m_ptr[0]; - } - - template - typename StackArray::size_type StackArray::max_size() const noexcept - { - return size(); - } - - template - typename StackArray::reverse_iterator StackArray::rbegin() noexcept - { - return reverse_iterator(&m_ptr[m_size]); - } - - template - typename StackArray::const_reverse_iterator StackArray::rbegin() const noexcept - { - return reverse_iterator(&m_ptr[m_size]); - } - - template - typename StackArray::reverse_iterator StackArray::rend() noexcept - { - return reverse_iterator(&m_ptr[0]); - } - - template - typename StackArray::const_reverse_iterator StackArray::rend() const noexcept - { - return reverse_iterator(&m_ptr[0]); - } - - template - typename StackArray::size_type StackArray::size() const noexcept - { - return m_size; - } - - template - typename StackArray::reference StackArray::operator[](size_type pos) - { - assert(pos < m_size); - return m_ptr[pos]; - } - - template - typename StackArray::const_reference StackArray::operator[](size_type pos) const - { - assert(pos < m_size); - return m_ptr[pos]; - } } #include diff --git a/include/Nazara/Core/StackArray.hpp b/include/Nazara/Core/StackArray.hpp new file mode 100644 index 000000000..1bed2b16c --- /dev/null +++ b/include/Nazara/Core/StackArray.hpp @@ -0,0 +1,93 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Core module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_STACKARRAY_HPP +#define NAZARA_STACKARRAY_HPP + +#include + +#ifdef NAZARA_ALLOCA_SUPPORT + #define NazaraStackArray(T, size) Nz::StackArray(static_cast(NAZARA_ALLOCA((size) * sizeof(T))), size) + #define NazaraStackArrayNoInit(T, size) Nz::StackArray(static_cast(NAZARA_ALLOCA((size) * sizeof(T))), size, typename Nz::StackArray::NoInitTag()) +#else + #define NazaraStackArray(T, size) Nz::StackArray(static_cast(Nz::OperatorNew((size) * sizeof(T))), size) + #define NazaraStackArrayNoInit(T, size) Nz::StackArray(static_cast(Nz::OperatorNew((size) * sizeof(T))), size, typename Nz::StackArray::NoInitTag()) +#endif + +#include +#include + +namespace Nz +{ + template + class StackArray + { + public: + struct NoInitTag {}; + + using value_type = T; + using const_iterator = const value_type*; + using const_pointer = const value_type*; + using const_reference = const value_type&; + using const_reverse_iterator = std::reverse_iterator; + using difference_type = std::ptrdiff_t; + using iterator = value_type*; + using pointer = value_type*; + using reference = value_type&; + using reverse_iterator = std::reverse_iterator; + using size_type = std::size_t; + + StackArray(T* stackMemory, std::size_t size); + StackArray(T* stackMemory, std::size_t size, NoInitTag); + ~StackArray(); + + reference back(); + const_reference back() const; + + iterator begin() noexcept; + const_iterator begin() const noexcept; + + const_iterator cbegin() const noexcept; + const_iterator cend() const noexcept; + const_reverse_iterator crbegin() const noexcept; + const_reverse_iterator crend() const noexcept; + + T* data() noexcept; + const T* data() const noexcept; + + bool empty() const noexcept; + + iterator end() noexcept; + const_iterator end() const noexcept; + + void fill(const T& value); + + reference front() noexcept; + const_reference front() const noexcept; + + size_type max_size() const noexcept; + + reverse_iterator rbegin() noexcept; + const_reverse_iterator rbegin() const noexcept; + + reverse_iterator rend() noexcept; + const_reverse_iterator rend() const noexcept; + + size_type size() const noexcept; + + reference operator[](size_type pos); + const_reference operator[](size_type pos) const; + + private: + std::size_t m_size; + T* m_ptr; + }; + +} + +#include + +#endif // NAZARA_STACKARRAY_HPP diff --git a/include/Nazara/Core/StackArray.inl b/include/Nazara/Core/StackArray.inl new file mode 100644 index 000000000..989ffdf88 --- /dev/null +++ b/include/Nazara/Core/StackArray.inl @@ -0,0 +1,208 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Core module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +// I'm not proud of those five following lines but ti's hard to do with another way now +#ifdef NAZARA_DEBUG_NEWREDEFINITION_DISABLE_REDEFINITION + #define NAZARA_DEBUG_NEWREDEFINITION_DISABLE_REDEFINITION_DEFINED +#else + #define NAZARA_DEBUG_NEWREDEFINITION_DISABLE_REDEFINITION +#endif + +#include +#include +#include +#include +#include +#include +#include + +namespace Nz +{ + /*! + * \ingroup core + * \class Nz::StackArray + * \brief Core class that represents a stack-allocated (if alloca is present) array + */ + template + StackArray::StackArray(T* stackMemory, std::size_t size) : + m_size(size), + m_ptr(stackMemory) + { + for (std::size_t i = 0; i < m_size; ++i) + PlacementNew(&m_ptr[i]); + } + + template + StackArray::StackArray(T* stackMemory, std::size_t size, NoInitTag) : + m_size(size), + m_ptr(stackMemory) + { + } + + template + StackArray::~StackArray() + { + for (std::size_t i = 0; i < m_size; ++i) + PlacementDestroy(&m_ptr[i]); + + #ifndef NAZARA_ALLOCA_SUPPORT + OperatorDelete(m_ptr); + #endif + } + + template + typename StackArray::reference StackArray::back() + { + assert(m_size != 0); + return m_ptr[m_size - 1]; + } + + template + typename StackArray::const_reference StackArray::back() const + { + assert(m_size != 0); + return m_ptr[m_size - 1]; + } + + template + typename StackArray::iterator StackArray::begin() noexcept + { + return iterator(&m_ptr[0]); + } + + template + typename StackArray::const_iterator StackArray::begin() const noexcept + { + return const_iterator(&m_ptr[0]); + } + + template + typename StackArray::const_iterator StackArray::cbegin() const noexcept + { + return const_iterator(&m_ptr[0]); + } + + template + typename StackArray::const_iterator StackArray::cend() const noexcept + { + return const_iterator(&m_ptr[m_size]); + } + + template + typename StackArray::const_reverse_iterator StackArray::crbegin() const noexcept + { + return const_reverse_iterator(&m_ptr[m_size]); + } + + template + typename StackArray::const_reverse_iterator StackArray::crend() const noexcept + { + return const_reverse_iterator(&m_ptr[0]); + } + + template + T* StackArray::data() noexcept + { + return m_ptr; + } + + template + const T* StackArray::data() const noexcept + { + return m_ptr; + } + + template + bool StackArray::empty() const noexcept + { + return m_size == 0; + } + + template + typename StackArray::iterator StackArray::end() noexcept + { + return iterator(&m_ptr[m_size]); + } + + template + typename StackArray::const_iterator StackArray::end() const noexcept + { + return const_iterator(&m_ptr[m_size]); + } + + template + void StackArray::fill(const T& value) + { + std::fill(begin(), end(), value); + } + + template + typename StackArray::reference StackArray::front() noexcept + { + return m_ptr[0]; + } + + template + typename StackArray::const_reference StackArray::front() const noexcept + { + return m_ptr[0]; + } + + template + typename StackArray::size_type StackArray::max_size() const noexcept + { + return size(); + } + + template + typename StackArray::reverse_iterator StackArray::rbegin() noexcept + { + return reverse_iterator(&m_ptr[m_size]); + } + + template + typename StackArray::const_reverse_iterator StackArray::rbegin() const noexcept + { + return reverse_iterator(&m_ptr[m_size]); + } + + template + typename StackArray::reverse_iterator StackArray::rend() noexcept + { + return reverse_iterator(&m_ptr[0]); + } + + template + typename StackArray::const_reverse_iterator StackArray::rend() const noexcept + { + return reverse_iterator(&m_ptr[0]); + } + + template + typename StackArray::size_type StackArray::size() const noexcept + { + return m_size; + } + + template + typename StackArray::reference StackArray::operator[](size_type pos) + { + assert(pos < m_size); + return m_ptr[pos]; + } + + template + typename StackArray::const_reference StackArray::operator[](size_type pos) const + { + assert(pos < m_size); + return m_ptr[pos]; + } +} + +#include + +// If we have defined the constant, then we have to undefine it (to avoid bloating in the engine) +#ifndef NAZARA_DEBUG_NEWREDEFINITION_DISABLE_REDEFINITION_DEFINED + #undef NAZARA_DEBUG_NEWREDEFINITION_DISABLE_REDEFINITION +#endif diff --git a/src/Nazara/Core/Posix/DirectoryImpl.cpp b/src/Nazara/Core/Posix/DirectoryImpl.cpp index e688aabf6..e0a7968f0 100644 --- a/src/Nazara/Core/Posix/DirectoryImpl.cpp +++ b/src/Nazara/Core/Posix/DirectoryImpl.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include #include #include @@ -39,7 +39,7 @@ namespace Nz std::size_t resultNameSize = std::strlen(m_result->d_name); std::size_t fullNameSize = pathSize + 1 + resultNameSize; - StackArray fullName = NazaraStackAllocationNoInit(char, fullNameSize + 1); + StackArray fullName = NazaraStackArrayNoInit(char, fullNameSize + 1); std::memcpy(&fullName[0], path.GetConstBuffer(), pathSize * sizeof(char)); fullName[pathSize] = '/'; std::memcpy(&fullName[pathSize + 1], m_result->d_name, resultNameSize * sizeof(char)); diff --git a/src/Nazara/Network/Posix/SocketImpl.cpp b/src/Nazara/Network/Posix/SocketImpl.cpp index c8140f019..7f94f5a9d 100644 --- a/src/Nazara/Network/Posix/SocketImpl.cpp +++ b/src/Nazara/Network/Posix/SocketImpl.cpp @@ -4,7 +4,7 @@ #include #include -#include +#include #include #include #include @@ -574,7 +574,7 @@ namespace Nz NazaraAssert(handle != InvalidHandle, "Invalid handle"); NazaraAssert(buffers && bufferCount > 0, "Invalid buffers"); - StackArray sysBuffers = NazaraStackAllocation(iovec, bufferCount); + StackArray sysBuffers = NazaraStackArray(iovec, bufferCount); for (std::size_t i = 0; i < bufferCount; ++i) { sysBuffers[i].iov_base = buffers[i].data; @@ -698,7 +698,7 @@ namespace Nz NazaraAssert(handle != InvalidHandle, "Invalid handle"); NazaraAssert(buffers && bufferCount > 0, "Invalid buffers"); - StackArray sysBuffers = NazaraStackAllocation(iovec, bufferCount); + StackArray sysBuffers = NazaraStackArray(iovec, bufferCount); for (std::size_t i = 0; i < bufferCount; ++i) { sysBuffers[i].iov_base = buffers[i].data; diff --git a/src/Nazara/Network/Win32/SocketImpl.cpp b/src/Nazara/Network/Win32/SocketImpl.cpp index 6d2e33f7f..15b89801b 100644 --- a/src/Nazara/Network/Win32/SocketImpl.cpp +++ b/src/Nazara/Network/Win32/SocketImpl.cpp @@ -5,7 +5,7 @@ #include #include #include -#include +#include #include // Some compilers (older versions of MinGW) lack Mstcpip.h which defines some structs/defines @@ -615,7 +615,7 @@ namespace Nz IpAddress senderIp; - StackArray winBuffers = NazaraStackAllocation(WSABUF, bufferCount); + StackArray winBuffers = NazaraStackArray(WSABUF, bufferCount); for (std::size_t i = 0; i < bufferCount; ++i) { winBuffers[i].buf = static_cast(buffers[i].data); @@ -714,7 +714,7 @@ namespace Nz IpAddressImpl::SockAddrBuffer nameBuffer; int bufferLength = IpAddressImpl::ToSockAddr(to, nameBuffer.data()); - StackArray winBuffers = NazaraStackAllocation(WSABUF, bufferCount); + StackArray winBuffers = NazaraStackArray(WSABUF, bufferCount); for (std::size_t i = 0; i < bufferCount; ++i) { winBuffers[i].buf = static_cast(buffers[i].data); diff --git a/src/Nazara/Physics2D/PhysWorld2D.cpp b/src/Nazara/Physics2D/PhysWorld2D.cpp index ea648b197..b967e63e5 100644 --- a/src/Nazara/Physics2D/PhysWorld2D.cpp +++ b/src/Nazara/Physics2D/PhysWorld2D.cpp @@ -3,7 +3,7 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include -#include +#include #include #include @@ -44,7 +44,7 @@ namespace Nz { //TODO: constexpr if to prevent copy/cast if sizeof(cpVect) == sizeof(Vector2f) - StackArray nVertices = NazaraStackAllocation(Vector2f, vertexCount); + StackArray nVertices = NazaraStackArray(Vector2f, vertexCount); for (int i = 0; i < vertexCount; ++i) nVertices[i].Set(float(vertices[i].x), float(vertices[i].y)); diff --git a/src/Nazara/Physics3D/PhysWorld3D.cpp b/src/Nazara/Physics3D/PhysWorld3D.cpp index e85ddcf0b..225c28b9e 100644 --- a/src/Nazara/Physics3D/PhysWorld3D.cpp +++ b/src/Nazara/Physics3D/PhysWorld3D.cpp @@ -3,7 +3,7 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include -#include +#include #include #include #include @@ -173,7 +173,7 @@ namespace Nz using ContactJoint = void*; // Query all joints first, to prevent removing a joint from the list while iterating on it - StackArray contacts = NazaraStackAllocationNoInit(ContactJoint, NewtonContactJointGetContactCount(contactJoint)); + StackArray contacts = NazaraStackArray(ContactJoint, NewtonContactJointGetContactCount(contactJoint)); std::size_t contactIndex = 0; for (ContactJoint contact = NewtonContactJointGetFirstContact(contactJoint); contact; contact = NewtonContactJointGetNextContact(contactJoint, contact)) { diff --git a/src/Nazara/Renderer/Renderer.cpp b/src/Nazara/Renderer/Renderer.cpp index d2a3ed7e1..57f90ea3d 100644 --- a/src/Nazara/Renderer/Renderer.cpp +++ b/src/Nazara/Renderer/Renderer.cpp @@ -8,8 +8,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -1762,7 +1762,7 @@ namespace Nz glGetProgramiv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &maxLength); maxLength++; - StackArray nameBuffer = NazaraStackAllocation(GLchar, maxLength + 1); + StackArray nameBuffer = NazaraStackArray(GLchar, maxLength + 1); for (GLint i = 0; i < count; i++) { GLint size; From 7da0fffe07e3ce4d4bd5cb0ea140d3092de4ca65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Mon, 2 Jul 2018 17:56:27 +0200 Subject: [PATCH 074/194] Core: Add StackVector class --- include/Nazara/Core/StackVector.hpp | 112 +++++++++ include/Nazara/Core/StackVector.inl | 334 +++++++++++++++++++++++++++ src/Nazara/Physics3D/PhysWorld3D.cpp | 10 +- tests/Engine/Core/StackVector.cpp | 175 ++++++++++++++ 4 files changed, 624 insertions(+), 7 deletions(-) create mode 100644 include/Nazara/Core/StackVector.hpp create mode 100644 include/Nazara/Core/StackVector.inl create mode 100644 tests/Engine/Core/StackVector.cpp diff --git a/include/Nazara/Core/StackVector.hpp b/include/Nazara/Core/StackVector.hpp new file mode 100644 index 000000000..18d7e7437 --- /dev/null +++ b/include/Nazara/Core/StackVector.hpp @@ -0,0 +1,112 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Core module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_STACKVECTOR_HPP +#define NAZARA_STACKVECTOR_HPP + +#include + +#ifdef NAZARA_ALLOCA_SUPPORT + #define NazaraStackVector(T, capacity) Nz::StackVector(static_cast(NAZARA_ALLOCA((capacity) * sizeof(T))), capacity) +#else + #define NazaraStackVector(T, capacity) Nz::StackVector(static_cast(Nz::OperatorNew((capacity) * sizeof(T))), capacity) +#endif + +#include +#include +#include + +namespace Nz +{ + template + class StackVector + { + public: + using value_type = T; + using const_iterator = const value_type*; + using const_pointer = const value_type*; + using const_reference = const value_type&; + using const_reverse_iterator = std::reverse_iterator; + using difference_type = std::ptrdiff_t; + using iterator = value_type*; + using pointer = value_type*; + using reference = value_type&; + using reverse_iterator = std::reverse_iterator; + using size_type = std::size_t; + + StackVector(T* stackMemory, std::size_t capacity); + ~StackVector(); + + reference back(); + const_reference back() const; + + iterator begin() noexcept; + const_iterator begin() const noexcept; + + size_type capacity() const noexcept; + + void clear() noexcept; + + const_iterator cbegin() const noexcept; + const_iterator cend() const noexcept; + const_reverse_iterator crbegin() const noexcept; + const_reverse_iterator crend() const noexcept; + + T* data() noexcept; + const T* data() const noexcept; + + template + iterator emplace(const_iterator pos, Args&&... args); + + template + reference emplace_back(Args&&... args); + + bool empty() const noexcept; + + iterator end() noexcept; + const_iterator end() const noexcept; + + iterator erase(const_iterator pos); + iterator erase(const_iterator first, const_iterator last); + + reference front() noexcept; + const_reference front() const noexcept; + + iterator insert(const_iterator pos, const T& value); + iterator insert(const_iterator pos, T&& value); + + size_type max_size() const noexcept; + + reference push_back(const T& value) noexcept(std::is_nothrow_copy_constructible::value); + reference push_back(T&& value) noexcept(std::is_nothrow_move_constructible::value); + + void pop_back(); + + void resize(size_type count); + void resize(size_type count, const value_type& value); + + reverse_iterator rbegin() noexcept; + const_reverse_iterator rbegin() const noexcept; + + reverse_iterator rend() noexcept; + const_reverse_iterator rend() const noexcept; + + size_type size() const noexcept; + + reference operator[](size_type pos); + const_reference operator[](size_type pos) const; + + private: + std::size_t m_capacity; + std::size_t m_size; + T* m_ptr; + }; + +} + +#include + +#endif // NAZARA_STACKVECTOR_HPP diff --git a/include/Nazara/Core/StackVector.inl b/include/Nazara/Core/StackVector.inl new file mode 100644 index 000000000..e2012fe32 --- /dev/null +++ b/include/Nazara/Core/StackVector.inl @@ -0,0 +1,334 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Core module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +// I'm not proud of those five following lines but ti's hard to do with another way now +#ifdef NAZARA_DEBUG_NEWREDEFINITION_DISABLE_REDEFINITION + #define NAZARA_DEBUG_NEWREDEFINITION_DISABLE_REDEFINITION_DEFINED +#else + #define NAZARA_DEBUG_NEWREDEFINITION_DISABLE_REDEFINITION +#endif + +#include +#include +#include +#include +#include +#include +#include + +namespace Nz +{ + /*! + * \ingroup core + * \class Nz::StackVector + * \brief Core class that represents a stack-allocated (if alloca is present) vector, that is with a capacity different from its size + */ + template + StackVector::StackVector(T* stackMemory, std::size_t capacity) : + m_capacity(capacity), + m_size(0), + m_ptr(stackMemory) + { + } + + template + StackVector::~StackVector() + { + clear(); + + #ifndef NAZARA_ALLOCA_SUPPORT + OperatorDelete(m_ptr); + #endif + } + + template + typename StackVector::reference StackVector::back() + { + assert(m_size != 0); + return m_ptr[m_size - 1]; + } + + template + typename StackVector::const_reference StackVector::back() const + { + assert(m_size != 0); + return m_ptr[m_size - 1]; + } + + template + typename StackVector::iterator StackVector::begin() noexcept + { + return iterator(&m_ptr[0]); + } + + template + typename StackVector::const_iterator StackVector::begin() const noexcept + { + return const_iterator(&m_ptr[0]); + } + + template + typename StackVector::size_type StackVector::capacity() const noexcept + { + return m_capacity; + } + + template + void StackVector::clear() noexcept + { + resize(0); + } + + template + typename StackVector::const_iterator StackVector::cbegin() const noexcept + { + return const_iterator(&m_ptr[0]); + } + + template + typename StackVector::const_iterator StackVector::cend() const noexcept + { + return const_iterator(&m_ptr[m_size]); + } + + template + typename StackVector::const_reverse_iterator StackVector::crbegin() const noexcept + { + return const_reverse_iterator(&m_ptr[m_size]); + } + + template + typename StackVector::const_reverse_iterator StackVector::crend() const noexcept + { + return const_reverse_iterator(&m_ptr[0]); + } + + template + T* StackVector::data() noexcept + { + return m_ptr; + } + + template + const T* StackVector::data() const noexcept + { + return m_ptr; + } + + template + template + typename StackVector::iterator StackVector::emplace(const_iterator pos, Args&& ...args) + { + assert(m_size < m_capacity); + assert(pos >= begin() && pos <= end()); + + std::size_t index = std::distance(begin(), pos); + if (pos < end()) + { + iterator lastElement = end() - 1; + PlacementNew(&m_ptr[m_size], std::move(*lastElement)); + + if (&m_ptr[index] < lastElement) + std::move(&m_ptr[index], lastElement, &m_ptr[index + 1]); + } + m_size++; + + return PlacementNew(&m_ptr[index], std::forward(args)...); + } + + template + template + typename StackVector::reference Nz::StackVector::emplace_back(Args&&... args) + { + assert(m_size < m_capacity); + return *PlacementNew(&m_ptr[m_size++], std::forward(args)...); + } + + template + bool StackVector::empty() const noexcept + { + return m_size == 0; + } + + template + typename StackVector::iterator StackVector::end() noexcept + { + return iterator(&m_ptr[m_size]); + } + + template + typename StackVector::const_iterator StackVector::end() const noexcept + { + return const_iterator(&m_ptr[m_size]); + } + + template + typename StackVector::iterator StackVector::erase(const_iterator pos) + { + assert(pos < end()); + std::size_t index = std::distance(begin(), pos); + std::move(pos + 1, end(), pos); + pop_back(); + + return iterator(&m_ptr[index]); + } + + template + typename StackVector::iterator StackVector::erase(const_iterator first, const_iterator last) + { + if (first == last) + return first; + + assert(first < last); + assert(first >= begin() && last <= end()); + + std::size_t index = std::distance(begin(), first); + std::move(last, end(), first); + resize(size() - (last - first)); + + return iterator(&m_ptr[index]); + } + + template + typename StackVector::reference StackVector::front() noexcept + { + return m_ptr[0]; + } + + template + typename StackVector::const_reference StackVector::front() const noexcept + { + return m_ptr[0]; + } + + template + typename StackVector::iterator StackVector::insert(const_iterator pos, const T& value) + { + return emplace(pos, value); + } + + template + typename StackVector::iterator StackVector::insert(const_iterator pos, T&& value) + { + return emplace(pos, std::move(value)); + } + + template + typename StackVector::size_type StackVector::max_size() const noexcept + { + return capacity(); + } + + template + typename StackVector::reference StackVector::push_back(const T& value) noexcept(std::is_nothrow_copy_constructible::value) + { + assert(m_size < m_capacity); + return *PlacementNew(&m_ptr[m_size++], value); + } + + template + typename StackVector::reference StackVector::push_back(T&& value) noexcept(std::is_nothrow_move_constructible::value) + { + assert(m_size < m_capacity); + return *PlacementNew(&m_ptr[m_size++], std::move(value)); + } + + template + void StackVector::pop_back() + { + assert(!empty()); + PlacementDestroy(&m_ptr[--m_size]); + } + + template + void StackVector::resize(size_type count) + { + assert(count < m_capacity); + if (count > m_size) + { + for (std::size_t i = m_size; i < count; ++i) + PlacementNew(&m_ptr[i]); + + m_size = count; + } + else if (count < m_size) + { + for (std::size_t i = count; i < m_size; ++i) + PlacementNew(&m_ptr[i]); + + m_size = count; + } + } + + template + void StackVector::resize(size_type count, const value_type& value) + { + assert(count < m_capacity); + if (count > m_size) + { + for (std::size_t i = m_size; i < count; ++i) + PlacementNew(&m_ptr[i], value); + + m_size = count; + } + else if (count < m_size) + { + for (std::size_t i = count; i < m_size; ++i) + PlacementDestroy(&m_ptr[i]); + + m_size = count; + } + } + + template + typename StackVector::reverse_iterator StackVector::rbegin() noexcept + { + return reverse_iterator(&m_ptr[m_size]); + } + + template + typename StackVector::const_reverse_iterator StackVector::rbegin() const noexcept + { + return reverse_iterator(&m_ptr[m_size]); + } + + template + typename StackVector::reverse_iterator StackVector::rend() noexcept + { + return reverse_iterator(&m_ptr[0]); + } + + template + typename StackVector::const_reverse_iterator StackVector::rend() const noexcept + { + return reverse_iterator(&m_ptr[0]); + } + + template + typename StackVector::size_type StackVector::size() const noexcept + { + return m_size; + } + + template + typename StackVector::reference StackVector::operator[](size_type pos) + { + assert(pos < m_size); + return m_ptr[pos]; + } + + template + typename StackVector::const_reference StackVector::operator[](size_type pos) const + { + assert(pos < m_size); + return m_ptr[pos]; + } +} + +#include + +// If we have defined the constant, then we have to undefine it (to avoid bloating in the engine) +#ifndef NAZARA_DEBUG_NEWREDEFINITION_DISABLE_REDEFINITION_DEFINED + #undef NAZARA_DEBUG_NEWREDEFINITION_DISABLE_REDEFINITION +#endif diff --git a/src/Nazara/Physics3D/PhysWorld3D.cpp b/src/Nazara/Physics3D/PhysWorld3D.cpp index 225c28b9e..01ed2226b 100644 --- a/src/Nazara/Physics3D/PhysWorld3D.cpp +++ b/src/Nazara/Physics3D/PhysWorld3D.cpp @@ -3,7 +3,7 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include -#include +#include #include #include #include @@ -173,13 +173,9 @@ namespace Nz using ContactJoint = void*; // Query all joints first, to prevent removing a joint from the list while iterating on it - StackArray contacts = NazaraStackArray(ContactJoint, NewtonContactJointGetContactCount(contactJoint)); - std::size_t contactIndex = 0; + StackVector contacts = NazaraStackVector(ContactJoint, NewtonContactJointGetContactCount(contactJoint)); for (ContactJoint contact = NewtonContactJointGetFirstContact(contactJoint); contact; contact = NewtonContactJointGetNextContact(contactJoint, contact)) - { - assert(contactIndex < contacts.size()); - contacts[contactIndex++] = contact; - } + contacts.push_back(contact); for (ContactJoint contact : contacts) { diff --git a/tests/Engine/Core/StackVector.cpp b/tests/Engine/Core/StackVector.cpp new file mode 100644 index 000000000..ceb36da89 --- /dev/null +++ b/tests/Engine/Core/StackVector.cpp @@ -0,0 +1,175 @@ +#include +#include +#include +#include + +SCENARIO("StackVector", "[CORE][STACKVECTOR]") +{ + GIVEN("A StackVector to contain multiple int") + { + volatile std::size_t capacity = 50; + Nz::StackVector vector = NazaraStackVector(int, capacity); + + WHEN("At construction, the vector is empty but has capacity") + { + CHECK(vector.capacity() == capacity); + CHECK(vector.empty()); + CHECK(vector.size() == 0); + } + + WHEN("Emplacing five elements, vector size increase accordingly") + { + for (std::size_t i = 0; i < 5; ++i) + { + int val = int(i); + CHECK(vector.emplace_back(val) == val); + } + + CHECK(!vector.empty()); + CHECK(vector.size() == 5); + + std::array expectedValues = { 0, 1, 2, 3, 4 }; + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + + WHEN("Pushing three elements, vector size increase accordingly") + { + for (std::size_t i = 0; i < 3; ++i) + { + int val = int(i); + CHECK(vector.push_back(val) == val); + } + + CHECK(!vector.empty()); + CHECK(vector.size() == 3); + + std::array expectedValues = { 0, 1, 2 }; + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + + THEN("We resize to five") + { + vector.resize(5); + + CHECK(!vector.empty()); + CHECK(vector.size() == 5); + + std::array expectedValues = { 0, 1, 2, 0, 0 }; + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + + AND_THEN("We resize it back to zero") + { + vector.resize(0); + + CHECK(vector.empty()); + CHECK(vector.size() == 0); + } + AND_THEN("We clear it") + { + vector.clear(); + + CHECK(vector.empty()); + CHECK(vector.size() == 0); + } + } + } + + WHEN("We generate its content will iota") + { + vector.resize(10); + std::iota(vector.begin(), vector.end(), -5); + + std::array expectedValues = { -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 }; + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + + WHEN("We generate its content using emplace") + { + for (std::size_t i = 0; i < 5; ++i) + { + int val = int(i); + CHECK(*vector.emplace(vector.end(), val) == val); + } + + CHECK(!vector.empty()); + CHECK(vector.size() == 5); + + std::array expectedValues = { 0, 1, 2, 3, 4 }; + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + + WHEN("We generate its content using emplace, in reverse order") + { + for (std::size_t i = 0; i < 5; ++i) + { + int val = int(i); + CHECK(*vector.emplace(vector.begin(), val) == val); + } + + CHECK(!vector.empty()); + CHECK(vector.size() == 5); + + std::array expectedValues = { 4, 3, 2, 1, 0 }; + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + + WHEN("We generate its content using emplace, at the middle") + { + for (std::size_t i = 0; i < 10; ++i) + { + int val = int(i); + CHECK(*vector.emplace(vector.begin() + i / 2, val) == val); + } + + CHECK(!vector.empty()); + CHECK(vector.size() == 10); + + std::array expectedValues = { 1, 3, 5, 7, 9, 8, 6, 4, 2, 0 }; + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + + WHEN("We generate its content using insert") + { + for (std::size_t i = 0; i < 5; ++i) + { + int val = int(i); + CHECK(*vector.insert(vector.end(), val) == val); + } + + CHECK(!vector.empty()); + CHECK(vector.size() == 5); + + std::array expectedValues = { 0, 1, 2, 3, 4 }; + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + + WHEN("We generate its content using insert, in reverse order") + { + for (std::size_t i = 0; i < 5; ++i) + { + int val = int(i); + CHECK(*vector.insert(vector.begin(), val) == val); + } + + CHECK(!vector.empty()); + CHECK(vector.size() == 5); + + std::array expectedValues = { 4, 3, 2, 1, 0 }; + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + + WHEN("We generate its content using insert, at the middle") + { + for (std::size_t i = 0; i < 10; ++i) + { + int val = int(i); + CHECK(*vector.insert(vector.begin() + i / 2, val) == val); + } + + CHECK(!vector.empty()); + CHECK(vector.size() == 10); + + std::array expectedValues = { 1, 3, 5, 7, 9, 8, 6, 4, 2, 0 }; + CHECK(std::equal(vector.begin(), vector.end(), expectedValues.begin(), expectedValues.end())); + } + } +} From e4b67019cb504f37aefb831f1ddec93e36e89707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Mon, 2 Jul 2018 18:13:14 +0200 Subject: [PATCH 075/194] Math/Vector[2|3]: Removed Distancef and made Distance templated --- ChangeLog.md | 3 +++ include/Nazara/Math/Vector2.hpp | 5 ++-- include/Nazara/Math/Vector2.inl | 36 +++++++++++++++----------- include/Nazara/Math/Vector3.hpp | 7 +++--- include/Nazara/Math/Vector3.inl | 39 +++++------------------------ tests/Engine/Core/AlgorithmCore.cpp | 6 ++--- 6 files changed, 39 insertions(+), 57 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 8690c48e0..167062f6c 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -121,6 +121,9 @@ Nazara Engine: - Added ObjectLibrary::Clear method - ⚠️ StackArray class and macro was moved from Core/MemoryHelper.hpp to Core/StackArray.hpp - ⚠️ Renamed NazaraStackAllocation[NoInit] macro to NazaraStackArray[NoInit] +- Added StackVector class +- ⚠️ Removed Vector[2|3]::Distancef method and made Distance method templated +- Added Vector2::Distance static method Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Math/Vector2.hpp b/include/Nazara/Math/Vector2.hpp index 6a7f925f6..28985305e 100644 --- a/include/Nazara/Math/Vector2.hpp +++ b/include/Nazara/Math/Vector2.hpp @@ -33,8 +33,8 @@ namespace Nz T AbsDotProduct(const Vector2& vec) const; T AngleBetween(const Vector2& vec) const; - T Distance(const Vector2& vec) const; - float Distancef(const Vector2& vec) const; + template + U Distance(const Vector2& vec) const; T DotProduct(const Vector2& vec) const; T GetLength() const; @@ -92,6 +92,7 @@ namespace Nz bool operator>(const Vector2& vec) const; bool operator>=(const Vector2& vec) const; + template static U Distance(const Vector2& vec1, const Vector2& vec2); static T DotProduct(const Vector2& vec1, const Vector2& vec2); static Vector2 Lerp(const Vector2& from, const Vector2& to, T interpolation); static Vector2 Normalize(const Vector2& vec); diff --git a/include/Nazara/Math/Vector2.inl b/include/Nazara/Math/Vector2.inl index c33af8102..15739b024 100644 --- a/include/Nazara/Math/Vector2.inl +++ b/include/Nazara/Math/Vector2.inl @@ -124,22 +124,10 @@ namespace Nz */ template - T Vector2::Distance(const Vector2& vec) const + template + U Vector2::Distance(const Vector2& vec) const { - return std::sqrt(SquaredDistance(vec)); - } - - /*! - * \brief Calculates the distance between two vectors - * \return The metric distance in float between two vectors with euclidean norm - * - * \param vec The other vector to measure the distance with - */ - - template - float Vector2::Distancef(const Vector2& vec) const - { - return std::sqrt(static_cast(SquaredDistance(vec))); + return static_cast(std::sqrt(SquaredDistance(vec))); } /*! @@ -835,6 +823,24 @@ namespace Nz return !operator<(vec); } + /*! + * \brief Measure the distance between two points + * Shorthand for vec1.Distance(vec2) + * + * param vec1 the first point + * param vec2 the second point + * + * \return The distance between the two vectors + * + * \see SquaredDistance + */ + template + template + U Vector2::Distance(const Vector2& vec1, const Vector2& vec2) + { + return vec1.Distance(vec2); + } + /*! * \brief Calculates the dot (scalar) product with two vectors * \return The value of the dot product diff --git a/include/Nazara/Math/Vector3.hpp b/include/Nazara/Math/Vector3.hpp index 7aed07d6a..4bd026acf 100644 --- a/include/Nazara/Math/Vector3.hpp +++ b/include/Nazara/Math/Vector3.hpp @@ -36,8 +36,8 @@ namespace Nz Vector3 CrossProduct(const Vector3& vec) const; - T Distance(const Vector3& vec) const; - float Distancef(const Vector3& vec) const; + template + U Distance(const Vector3& vec) const; T DotProduct(const Vector3& vec) const; T GetLength() const; @@ -106,8 +106,7 @@ namespace Nz static Vector3 Backward(); static Vector3 CrossProduct(const Vector3& vec1, const Vector3& vec2); static T DotProduct(const Vector3& vec1, const Vector3& vec2); - static T Distance(const Vector3& vec1, const Vector3& vec2); - static float Distancef(const Vector3& vec1, const Vector3& vec2); + template static U Distance(const Vector3& vec1, const Vector3& vec2); static Vector3 Down(); static Vector3 Forward(); static Vector3 Left(); diff --git a/include/Nazara/Math/Vector3.inl b/include/Nazara/Math/Vector3.inl index 8ed7c6977..5a77c8e05 100644 --- a/include/Nazara/Math/Vector3.inl +++ b/include/Nazara/Math/Vector3.inl @@ -162,21 +162,10 @@ namespace Nz * \see SquaredDistance */ template - T Vector3::Distance(const Vector3& vec) const + template + U Vector3::Distance(const Vector3& vec) const { - return std::sqrt(SquaredDistance(vec)); - } - - /*! - * \brief Calculates the distance between two vectors - * \return The metric distance in float between two vectors with euclidean norm - * - * \param vec The other vector to measure the distance with - */ - template - float Vector3::Distancef(const Vector3& vec) const - { - return std::sqrt(static_cast(SquaredDistance(vec))); + return static_cast(std::sqrt(SquaredDistance(vec))); } /*! @@ -1014,26 +1003,10 @@ namespace Nz * \see SquaredDistance */ template - T Vector3::Distance(const Vector3& vec1, const Vector3& vec2) + template + U Vector3::Distance(const Vector3& vec1, const Vector3& vec2) { - return vec1.Distance(vec2); - } - - /*! - * \brief Measure the distance between two points as a float - * Shorthand for vec1.Distancef(vec2) - * - * param vec1 the first point - * param vec2 the second point - * - * \return The distance between the two vectors as a float - * - * \see SquaredDistancef - */ - template - float Vector3::Distancef(const Vector3& vec1, const Vector3& vec2) - { - return vec1.Distancef(vec2); + return vec1.Distance(vec2); } /*! diff --git a/tests/Engine/Core/AlgorithmCore.cpp b/tests/Engine/Core/AlgorithmCore.cpp index 39e06c566..59ac435bb 100644 --- a/tests/Engine/Core/AlgorithmCore.cpp +++ b/tests/Engine/Core/AlgorithmCore.cpp @@ -18,14 +18,14 @@ TEST_CASE("Apply", "[CORE][ALGORITHM]") REQUIRE(result == (Nz::Vector2::Unit() * 2)); } - SECTION("Apply member function to vector2") + /*SECTION("Apply member function to vector2") { Nz::Vector2 vector = Nz::Vector2::Unit(); - int result = Nz::Apply(vector, &Nz::Vector2::Distance, std::make_tuple(vector)); + int result = Nz::Apply(vector, (int(Nz::Vector2::*)(const Nz::Vector2&)) &Nz::Vector2::Distance, std::make_tuple(vector)); REQUIRE(result == 0); - } + }*/ } TEST_CASE("ComputeHash", "[CORE][ALGORITHM]") From aafb79f06c419d92c380ae95af7326093d4f062a Mon Sep 17 00:00:00 2001 From: S6066 Date: Fri, 6 Jul 2018 10:42:23 +0200 Subject: [PATCH 076/194] Fix: destroy instead of constructing (#169) --- include/Nazara/Core/StackVector.inl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Nazara/Core/StackVector.inl b/include/Nazara/Core/StackVector.inl index e2012fe32..c8b71a5cb 100644 --- a/include/Nazara/Core/StackVector.inl +++ b/include/Nazara/Core/StackVector.inl @@ -255,7 +255,7 @@ namespace Nz else if (count < m_size) { for (std::size_t i = count; i < m_size; ++i) - PlacementNew(&m_ptr[i]); + PlacementDestroy(&m_ptr[i]); m_size = count; } From cb6885d6a96a1d826a6bbb27410fcfc31a1d94ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 6 Jul 2018 15:24:30 +0200 Subject: [PATCH 077/194] Graphics/CullingList: Fix compilation errors on MSVC with /permissive- --- ChangeLog.md | 1 + .../NDK/Components/GraphicsComponent.inl | 4 +-- include/Nazara/Graphics/CullingList.hpp | 24 +++++++++++---- include/Nazara/Graphics/CullingList.inl | 30 ++++++++----------- 4 files changed, 34 insertions(+), 25 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 167062f6c..6ec9c8c54 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -124,6 +124,7 @@ Nazara Engine: - Added StackVector class - ⚠️ Removed Vector[2|3]::Distancef method and made Distance method templated - Added Vector2::Distance static method +- ⚠️ Fixed compilation error on MSVC with flag /permissive- on CullingList class Nazara Development Kit: - Added ImageWidget (#139) diff --git a/SDK/include/NDK/Components/GraphicsComponent.inl b/SDK/include/NDK/Components/GraphicsComponent.inl index 69be82ba0..8ddd3e223 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -37,10 +37,10 @@ namespace Ndk inline void GraphicsComponent::AddToCullingList(GraphicsComponentCullingList* cullingList) const { - m_volumeCullingEntries.emplace_back(VolumeCullingEntry{}); + m_volumeCullingEntries.emplace_back(); VolumeCullingEntry& entry = m_volumeCullingEntries.back(); entry.cullingListReleaseSlot.Connect(cullingList->OnCullingListRelease, this, &GraphicsComponent::RemoveFromCullingList); - entry.listEntry = cullingList->RegisterVolumeTest(this); + cullingList->RegisterVolumeTest(this, &entry.listEntry); InvalidateBoundingVolume(); } diff --git a/include/Nazara/Graphics/CullingList.hpp b/include/Nazara/Graphics/CullingList.hpp index 7232e9cdb..85b4ce2f9 100644 --- a/include/Nazara/Graphics/CullingList.hpp +++ b/include/Nazara/Graphics/CullingList.hpp @@ -41,9 +41,9 @@ namespace Nz std::size_t Cull(const Frustumf& frustum, bool* forceInvalidation = nullptr); - NoTestEntry RegisterNoTest(const T* renderable); - SphereEntry RegisterSphereTest(const T* renderable); - VolumeEntry RegisterVolumeTest(const T* renderable); + void RegisterNoTest(const T* renderable, NoTestEntry* entry); + void RegisterSphereTest(const T* renderable, SphereEntry* entry); + void RegisterVolumeTest(const T* renderable, VolumeEntry* entry); CullingList& operator=(const CullingList& renderable) = delete; CullingList& operator=(CullingList&& renderable) = delete; @@ -135,41 +135,53 @@ namespace Nz }; template - class CullingList::NoTestEntry : public CullingList::template Entry + class CullingList::NoTestEntry : public CullingList::template Entry { friend CullingList; public: NoTestEntry(); + NoTestEntry(NoTestEntry&&) = default; + ~NoTestEntry() = default; + + NoTestEntry& operator=(NoTestEntry&&) = default; private: NoTestEntry(CullingList* parent, std::size_t index); }; template - class CullingList::SphereEntry : public CullingList::template Entry + class CullingList::SphereEntry : public CullingList::template Entry { friend CullingList; public: SphereEntry(); + SphereEntry(SphereEntry&&) = default; + ~SphereEntry() = default; void UpdateSphere(const Spheref& sphere); + SphereEntry& operator=(SphereEntry&&) = default; + private: SphereEntry(CullingList* parent, std::size_t index); }; template - class CullingList::VolumeEntry : public CullingList::template Entry + class CullingList::VolumeEntry : public CullingList::template Entry { friend CullingList; public: VolumeEntry(); + VolumeEntry(VolumeEntry&&) = default; + ~VolumeEntry() = default; void UpdateVolume(const BoundingVolumef& sphere); + VolumeEntry& operator=(VolumeEntry&&) = default; + private: VolumeEntry(CullingList* parent, std::size_t index); }; diff --git a/include/Nazara/Graphics/CullingList.inl b/include/Nazara/Graphics/CullingList.inl index 238468b47..71cb57fe3 100644 --- a/include/Nazara/Graphics/CullingList.inl +++ b/include/Nazara/Graphics/CullingList.inl @@ -71,30 +71,26 @@ namespace Nz } template - typename CullingList::NoTestEntry CullingList::RegisterNoTest(const T* renderable) + void CullingList::RegisterNoTest(const T* renderable, NoTestEntry* entry) { - NoTestEntry entry(this, m_noTestList.size()); - m_noTestList.emplace_back(NoTestVisibilityEntry{&entry, renderable, false}); //< Address of entry will be updated when moving + *entry = NoTestEntry(this, m_noTestList.size()); + m_noTestList.emplace_back(NoTestVisibilityEntry{entry, renderable, false}); //< Address of entry will be updated when moving + } + + template + void CullingList::RegisterSphereTest(const T* renderable, SphereEntry* entry) + { + *entry = SphereEntry(this, m_sphereTestList.size()); + m_sphereTestList.emplace_back(SphereVisibilityEntry{Nz::Spheref(), entry, renderable, false}); //< Address of entry will be updated when moving return entry; } template - typename CullingList::SphereEntry CullingList::RegisterSphereTest(const T* renderable) + void CullingList::RegisterVolumeTest(const T* renderable, VolumeEntry* entry) { - SphereEntry entry(this, m_sphereTestList.size()); - m_sphereTestList.emplace_back(SphereVisibilityEntry{Nz::Spheref(), &entry, renderable, false}); //< Address of entry will be updated when moving - - return entry; - } - - template - typename CullingList::VolumeEntry CullingList::RegisterVolumeTest(const T* renderable) - { - VolumeEntry entry(this, m_volumeTestList.size()); - m_volumeTestList.emplace_back(VolumeVisibilityEntry{Nz::BoundingVolumef(), &entry, renderable, false}); //< Address of entry will be updated when moving - - return entry; + *entry = VolumeEntry(this, m_volumeTestList.size()); + m_volumeTestList.emplace_back(VolumeVisibilityEntry{Nz::BoundingVolumef(), entry, renderable, false}); //< Address of entry will be updated when moving } // Interface STD From 6390da95d39e4c6fb6eae98581e96baac2149555 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 7 Jul 2018 14:35:11 +0200 Subject: [PATCH 078/194] Fix previous commit crash --- .../NDK/Components/GraphicsComponent.inl | 2 +- include/Nazara/Graphics/CullingList.hpp | 6 ++--- include/Nazara/Graphics/CullingList.inl | 24 +++++++++++-------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/SDK/include/NDK/Components/GraphicsComponent.inl b/SDK/include/NDK/Components/GraphicsComponent.inl index 8ddd3e223..08dc3c867 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -40,7 +40,7 @@ namespace Ndk m_volumeCullingEntries.emplace_back(); VolumeCullingEntry& entry = m_volumeCullingEntries.back(); entry.cullingListReleaseSlot.Connect(cullingList->OnCullingListRelease, this, &GraphicsComponent::RemoveFromCullingList); - cullingList->RegisterVolumeTest(this, &entry.listEntry); + entry.listEntry = cullingList->RegisterVolumeTest(this); InvalidateBoundingVolume(); } diff --git a/include/Nazara/Graphics/CullingList.hpp b/include/Nazara/Graphics/CullingList.hpp index 85b4ce2f9..af48f2542 100644 --- a/include/Nazara/Graphics/CullingList.hpp +++ b/include/Nazara/Graphics/CullingList.hpp @@ -41,9 +41,9 @@ namespace Nz std::size_t Cull(const Frustumf& frustum, bool* forceInvalidation = nullptr); - void RegisterNoTest(const T* renderable, NoTestEntry* entry); - void RegisterSphereTest(const T* renderable, SphereEntry* entry); - void RegisterVolumeTest(const T* renderable, VolumeEntry* entry); + NoTestEntry RegisterNoTest(const T* renderable); + SphereEntry RegisterSphereTest(const T* renderable); + VolumeEntry RegisterVolumeTest(const T* renderable); CullingList& operator=(const CullingList& renderable) = delete; CullingList& operator=(CullingList&& renderable) = delete; diff --git a/include/Nazara/Graphics/CullingList.inl b/include/Nazara/Graphics/CullingList.inl index 71cb57fe3..5580efd8b 100644 --- a/include/Nazara/Graphics/CullingList.inl +++ b/include/Nazara/Graphics/CullingList.inl @@ -71,26 +71,30 @@ namespace Nz } template - void CullingList::RegisterNoTest(const T* renderable, NoTestEntry* entry) + auto CullingList::RegisterNoTest(const T* renderable) -> NoTestEntry { - *entry = NoTestEntry(this, m_noTestList.size()); - m_noTestList.emplace_back(NoTestVisibilityEntry{entry, renderable, false}); //< Address of entry will be updated when moving + NoTestEntry newEntry(this, m_volumeTestList.size()); + m_noTestList.emplace_back(NoTestVisibilityEntry{&newEntry, renderable, false}); //< Address of entry will be updated when moving + + return newEntry; } template - void CullingList::RegisterSphereTest(const T* renderable, SphereEntry* entry) + auto CullingList::RegisterSphereTest(const T* renderable) -> SphereEntry { - *entry = SphereEntry(this, m_sphereTestList.size()); - m_sphereTestList.emplace_back(SphereVisibilityEntry{Nz::Spheref(), entry, renderable, false}); //< Address of entry will be updated when moving + SphereEntry newEntry(this, m_sphereTestList.size() - 1); + m_sphereTestList.emplace_back(SphereVisibilityEntry{Nz::Spheref(), &newEntry, renderable, false}); //< Address of entry will be updated when moving - return entry; + return newEntry; } template - void CullingList::RegisterVolumeTest(const T* renderable, VolumeEntry* entry) + auto CullingList::RegisterVolumeTest(const T* renderable) -> VolumeEntry { - *entry = VolumeEntry(this, m_volumeTestList.size()); - m_volumeTestList.emplace_back(VolumeVisibilityEntry{Nz::BoundingVolumef(), entry, renderable, false}); //< Address of entry will be updated when moving + VolumeEntry newEntry(this, m_volumeTestList.size()); + m_volumeTestList.emplace_back(VolumeVisibilityEntry{Nz::BoundingVolumef(), &newEntry, renderable, false}); //< Address of entry will be updated when moving + + return newEntry; } // Interface STD From a87095476249c6eca4e8135d9510a2799877b746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Mon, 9 Jul 2018 18:06:08 +0200 Subject: [PATCH 079/194] Network/ENetPeer: Fix reliable sequence number wrap error --- ChangeLog.md | 3 ++- src/Nazara/Network/ENetPeer.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 6ec9c8c54..39d2b3431 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -124,7 +124,8 @@ Nazara Engine: - Added StackVector class - ⚠️ Removed Vector[2|3]::Distancef method and made Distance method templated - Added Vector2::Distance static method -- ⚠️ Fixed compilation error on MSVC with flag /permissive- on CullingList class +- ⚠️ Fixed compilation errors on MSVC with flag /permissive- on CullingList class +- Fixed bug in ENet implementation causing legit reliable packets to be dropped on sequence number overflow Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Network/ENetPeer.cpp b/src/Nazara/Network/ENetPeer.cpp index 38189361b..a26423bb4 100644 --- a/src/Nazara/Network/ENetPeer.cpp +++ b/src/Nazara/Network/ENetPeer.cpp @@ -347,7 +347,7 @@ namespace Nz { IncomingCommmand& incomingCommand = *currentCommand; - if (incomingCommand.fragmentsRemaining > 0 || incomingCommand.reliableSequenceNumber != (channel.incomingReliableSequenceNumber + 1)) + if (incomingCommand.fragmentsRemaining > 0 || incomingCommand.reliableSequenceNumber != Nz::UInt16(channel.incomingReliableSequenceNumber + 1)) break; channel.incomingReliableSequenceNumber = incomingCommand.reliableSequenceNumber; From 49d33bea55f46d2f61029f0dee9c3dfeb4d7c679 Mon Sep 17 00:00:00 2001 From: S6066 Date: Tue, 10 Jul 2018 14:48:23 +0200 Subject: [PATCH 080/194] Implement LuaImpl* for Vector[2|3] (#170) * Implement LuaImplQueryArg for Vector[2|3]i * Implement LuaImplReplyVal for Vector[2|3]i * Edit changelog * Fix previous commit crash * Network/ENetPeer: Fix reliable sequence number wrap error * Edit changelog * what have I done to changelog --- ChangeLog.md | 1 + SDK/include/NDK/LuaAPI.inl | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 39d2b3431..5bafdd7fc 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -125,6 +125,7 @@ Nazara Engine: - ⚠️ Removed Vector[2|3]::Distancef method and made Distance method templated - Added Vector2::Distance static method - ⚠️ Fixed compilation errors on MSVC with flag /permissive- on CullingList class +- Added LuaImplQueryArg & LuaImplReplyVal functions for Vector[2|3] - Fixed bug in ENet implementation causing legit reliable packets to be dropped on sequence number overflow Nazara Development Kit: diff --git a/SDK/include/NDK/LuaAPI.inl b/SDK/include/NDK/LuaAPI.inl index 318bb6add..40fe33ec7 100644 --- a/SDK/include/NDK/LuaAPI.inl +++ b/SDK/include/NDK/LuaAPI.inl @@ -269,6 +269,15 @@ namespace Nz return ret; } + inline unsigned int LuaImplQueryArg(const LuaState& state, int index, Vector2i* vec, TypeTag) + { + Vector2d vecDouble; + unsigned int ret = LuaImplQueryArg(state, index, &vecDouble, TypeTag()); + + vec->Set(vecDouble); + return ret; + } + inline unsigned int LuaImplQueryArg(const LuaState& state, int index, Vector3d* vec, TypeTag) { switch (state.GetType(index)) @@ -308,6 +317,15 @@ namespace Nz return ret; } + inline unsigned int LuaImplQueryArg(const LuaState& state, int index, Vector3i* vec, TypeTag) + { + Vector3d vecDouble; + unsigned int ret = LuaImplQueryArg(state, index, &vecDouble, TypeTag()); + + vec->Set(vecDouble); + return ret; + } + inline unsigned int LuaImplQueryArg(const LuaState& state, int index, Ndk::Entity** handle, TypeTag) { if (!state.IsOfType(index, LuaType_Nil)) @@ -538,6 +556,12 @@ namespace Nz return 1; } + inline int LuaImplReplyVal(const LuaState& state, Vector2i&& val, TypeTag) + { + state.PushInstance("Vector2", val); + return 1; + } + inline int LuaImplReplyVal(const LuaState& state, Vector3d&& val, TypeTag) { state.PushInstance("Vector3", val); @@ -556,6 +580,12 @@ namespace Nz return 1; } + inline int LuaImplReplyVal(const LuaState& state, Vector3i&& val, TypeTag) + { + state.PushInstance("Vector3", val); + return 1; + } + inline int LuaImplReplyVal(const LuaState& state, Ndk::Entity* ptr, TypeTag) { state.PushInstance("Entity", ptr); From 58ce1829833d6d8a0a41d6f17104251b1320fc64 Mon Sep 17 00:00:00 2001 From: S6066 Date: Wed, 11 Jul 2018 19:16:54 +0200 Subject: [PATCH 081/194] Bugfix: invalid variable still used after move (#171) --- include/Nazara/Graphics/Sprite.inl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/Nazara/Graphics/Sprite.inl b/include/Nazara/Graphics/Sprite.inl index 7412793b7..a00eae551 100644 --- a/include/Nazara/Graphics/Sprite.inl +++ b/include/Nazara/Graphics/Sprite.inl @@ -280,8 +280,10 @@ namespace Nz else { material->SetDiffuseMap(std::move(texture)); - if (resizeSprite && texture && texture->IsValid()) - SetSize(Vector2f(Vector2ui(texture->GetSize()))); + const TextureRef& newTexture = material->GetDiffuseMap(); + + if (resizeSprite && newTexture && newTexture->IsValid()) + SetSize(Vector2f(Vector2ui(newTexture->GetSize()))); } } From 01ccca433da8ad82fd98528664771bb2b1503383 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Jul 2018 16:46:01 +0200 Subject: [PATCH 082/194] Physics/PhysWorld3D: Add [Get|Set]ThreadCount --- include/Nazara/Physics3D/PhysWorld3D.hpp | 2 ++ src/Nazara/Physics3D/PhysWorld3D.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/include/Nazara/Physics3D/PhysWorld3D.hpp b/include/Nazara/Physics3D/PhysWorld3D.hpp index 223fce4fe..129c2d89c 100644 --- a/include/Nazara/Physics3D/PhysWorld3D.hpp +++ b/include/Nazara/Physics3D/PhysWorld3D.hpp @@ -45,11 +45,13 @@ namespace Nz int GetMaterial(const String& name); std::size_t GetMaxStepCount() const; float GetStepSize() const; + unsigned int GetThreadCount() const; void SetGravity(const Vector3f& gravity); void SetMaxStepCount(std::size_t maxStepCount); void SetSolverModel(unsigned int model); void SetStepSize(float stepSize); + void SetThreadCount(unsigned int threadCount); void SetMaterialCollisionCallback(int firstMaterial, int secondMaterial, AABBOverlapCallback aabbOverlapCallback, CollisionCallback collisionCallback); void SetMaterialDefaultCollidable(int firstMaterial, int secondMaterial, bool collidable); diff --git a/src/Nazara/Physics3D/PhysWorld3D.cpp b/src/Nazara/Physics3D/PhysWorld3D.cpp index 01ed2226b..bce1f5b6d 100644 --- a/src/Nazara/Physics3D/PhysWorld3D.cpp +++ b/src/Nazara/Physics3D/PhysWorld3D.cpp @@ -76,6 +76,11 @@ namespace Nz return m_stepSize; } + unsigned int PhysWorld3D::GetThreadCount() const + { + return NewtonGetThreadsCount(m_world); + } + void PhysWorld3D::SetGravity(const Vector3f& gravity) { m_gravity = gravity; @@ -96,6 +101,11 @@ namespace Nz m_stepSize = stepSize; } + void PhysWorld3D::SetThreadCount(unsigned int threadCount) + { + NewtonSetThreadsCount(m_world, threadCount); + } + void PhysWorld3D::SetMaterialCollisionCallback(int firstMaterial, int secondMaterial, AABBOverlapCallback aabbOverlapCallback, CollisionCallback collisionCallback) { static_assert(sizeof(UInt64) >= 2 * sizeof(int), "Oops"); From a12c72186f96554941207bcbada74fa29dc53fdb Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 15 Jul 2018 16:46:32 +0200 Subject: [PATCH 083/194] Sdk/DebugSystem: Fix OBB drawing --- SDK/src/NDK/Systems/DebugSystem.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 0da17c352..204737e9a 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -59,7 +59,6 @@ namespace Ndk { NazaraAssert(m_entityOwner, "DebugRenderable has no owner"); - const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); Nz::Boxf aabb = entityGfx.GetBoundingVolume().aabb; @@ -86,16 +85,14 @@ namespace Ndk { NazaraAssert(m_entityOwner, "DebugRenderable has no owner"); - const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); - Nz::Boxf obb = entityGfx.GetBoundingVolume().obb.localBox; + Nz::OrientedBoxf entityObb = entityGfx.GetBoundingVolume().obb; + Nz::Boxf obb(entityObb.GetCorner(Nz::BoxCorner_NearLeftTop), entityObb.GetCorner(Nz::BoxCorner_FarRightBottom)); - Nz::Matrix4f transformMatrix = instanceData.transformMatrix; - Nz::Vector3f obbCenter = transformMatrix.Transform(obb.GetCenter(), 0.f); //< Apply rotation/scale to obb center, to display it at a correct position - - transformMatrix.ApplyScale(obb.GetLengths()); - transformMatrix.ApplyTranslation(obbCenter); + Nz::Matrix4f transformMatrix = Nz::Matrix4f::Identity(); + transformMatrix.SetScale(obb.GetLengths()); + transformMatrix.SetTranslation(obb.GetCenter()); renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); } From 6dfc866a4d324185a6b209fc7eb048116e5e9d0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 17 Jul 2018 09:56:30 +0200 Subject: [PATCH 084/194] Network/ENetPeer: Fix enet stuff --- src/Nazara/Network/ENetPeer.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Nazara/Network/ENetPeer.cpp b/src/Nazara/Network/ENetPeer.cpp index a26423bb4..fbae65e14 100644 --- a/src/Nazara/Network/ENetPeer.cpp +++ b/src/Nazara/Network/ENetPeer.cpp @@ -286,6 +286,8 @@ namespace Nz { UInt32 serviceTime = m_host->GetServiceTime(); + auto insertPosition = m_outgoingReliableCommands.begin(); + auto it = m_sentReliableCommands.begin(); for (; it != m_sentReliableCommands.end();) { @@ -317,17 +319,14 @@ namespace Nz command.roundTripTimeout = m_roundTripTime + 4 * m_roundTripTimeVariance; command.roundTripTimeoutLimit = m_timeoutLimit * command.roundTripTimeout; - m_outgoingReliableCommands.emplace_front(std::move(command)); + m_outgoingReliableCommands.insert(insertPosition, std::move(command)); it = m_sentReliableCommands.erase(it); - // Okay this should just never procs, I don't see how it would be possible - /*if (currentCommand == enet_list_begin(&peer->sentReliableCommands) && - !enet_list_empty(&peer->sentReliableCommands)) + if (it == m_sentReliableCommands.begin() && !m_sentReliableCommands.empty()) { - outgoingCommand = (ENetOutgoingCommand *) currentCommand; - - peer->nextTimeout = outgoingCommand->sentTime + outgoingCommand->roundTripTimeout; - }*/ + OutgoingCommand& outgoingCommand = *it; + m_nextTimeout = outgoingCommand.sentTime + outgoingCommand.roundTripTimeout; + } } return false; From 7b6cc47e03952fd4d4bd9f7f99567fd044eb8230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 17 Jul 2018 10:51:35 +0200 Subject: [PATCH 085/194] Sdk/Entity: Add IsDying method --- SDK/include/NDK/Entity.hpp | 1 + SDK/include/NDK/World.hpp | 2 ++ SDK/include/NDK/World.inl | 23 ++++++++++++++++++++++- SDK/src/NDK/Entity.cpp | 11 ++++++++++- tests/SDK/NDK/World.cpp | 28 +++++++++++++++++++++++++++- 5 files changed, 62 insertions(+), 3 deletions(-) diff --git a/SDK/include/NDK/Entity.hpp b/SDK/include/NDK/Entity.hpp index 355028fef..3cbe4785c 100644 --- a/SDK/include/NDK/Entity.hpp +++ b/SDK/include/NDK/Entity.hpp @@ -61,6 +61,7 @@ namespace Ndk void Invalidate(); inline bool IsEnabled() const; + bool IsDying() const; inline bool IsValid() const; inline void RemoveAllComponents(); diff --git a/SDK/include/NDK/World.hpp b/SDK/include/NDK/World.hpp index 9b1d4c970..98e6d87ac 100644 --- a/SDK/include/NDK/World.hpp +++ b/SDK/include/NDK/World.hpp @@ -67,6 +67,8 @@ namespace Ndk inline void KillEntity(Entity* entity); inline void KillEntities(const EntityVector& list); + inline bool IsEntityDying(const Entity* entity) const; + inline bool IsEntityDying(EntityId id) const; inline bool IsEntityValid(const Entity* entity) const; inline bool IsEntityIdValid(EntityId id) const; inline bool IsProfilerEnabled() const; diff --git a/SDK/include/NDK/World.inl b/SDK/include/NDK/World.inl index 942ce4d36..860454a0d 100644 --- a/SDK/include/NDK/World.inl +++ b/SDK/include/NDK/World.inl @@ -324,13 +324,34 @@ namespace Ndk KillEntity(entity); } + /*! + * \brief Checks whether or not an entity is dying (has been killed this update) + * \return true If the entity exists and is dying + * + * \param entity Pointer to the entity + */ + inline bool World::IsEntityDying(const Entity* entity) const + { + return entity && IsEntityDying(entity->GetId()); + } + + /*! + * \brief Checks whether or not an entity is dying (has been killed this update) + * \return true If it is the case, false if the entity is alive (and hasn't been killed yet) or if the entity id is invalid + * + * \param id Identifier of the entity + */ + inline bool World::IsEntityDying(EntityId id) const + { + return m_killedEntities.UnboundedTest(id); + } + /*! * \brief Checks whether or not an entity is valid * \return true If it is the case * * \param entity Pointer to the entity */ - inline bool World::IsEntityValid(const Entity* entity) const { return entity && entity->GetWorld() == this && IsEntityIdValid(entity->GetId()); diff --git a/SDK/src/NDK/Entity.cpp b/SDK/src/NDK/Entity.cpp index ffcce07f0..7bc81982d 100644 --- a/SDK/src/NDK/Entity.cpp +++ b/SDK/src/NDK/Entity.cpp @@ -133,13 +133,22 @@ namespace Ndk /*! * \brief Invalidates the entity */ - void Entity::Invalidate() { // We alert everyone that we have been updated m_world->Invalidate(m_id); } + + /*! + * \brief Checks if the entity has been killed this update + * \return True if the entity is currently dying and will be dead at next world refresh + */ + bool Entity::IsDying() const + { + return m_world->IsEntityDying(m_id); + } + /*! * \brief Creates the entity */ diff --git a/tests/SDK/NDK/World.cpp b/tests/SDK/NDK/World.cpp index 4d25db5f6..185717609 100644 --- a/tests/SDK/NDK/World.cpp +++ b/tests/SDK/NDK/World.cpp @@ -100,4 +100,30 @@ SCENARIO("World", "[NDK][WORLD]") } } } -} \ No newline at end of file + + GIVEN("A newly created entity") + { + Ndk::World world(false); + Ndk::EntityHandle entity = world.CreateEntity(); + + REQUIRE(entity.IsValid()); + REQUIRE(entity->IsValid()); + CHECK_FALSE(entity->IsDying()); + + WHEN("We kill it") + { + entity->Kill(); + + CHECK(entity.IsValid()); + CHECK(entity->IsValid()); + CHECK(entity->IsDying()); + + THEN("We refresh the world") + { + world.Refresh(); + + CHECK_FALSE(entity.IsValid()); + } + } + } +} From abedc3074725b8a9684f18b995855880ebb1a511 Mon Sep 17 00:00:00 2001 From: Faymoon Date: Tue, 31 Jul 2018 13:24:19 +0200 Subject: [PATCH 086/194] Add: [Get/Set]AngularDamping for standardization (#173) * Update * Add: [Get/Set]AngularDaming for standardization --- include/Nazara/Physics2D/RigidBody2D.hpp | 4 ++++ include/Nazara/Physics2D/RigidBody2D.inl | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 include/Nazara/Physics2D/RigidBody2D.inl diff --git a/include/Nazara/Physics2D/RigidBody2D.hpp b/include/Nazara/Physics2D/RigidBody2D.hpp index 3b74a1943..f8df42a8a 100644 --- a/include/Nazara/Physics2D/RigidBody2D.hpp +++ b/include/Nazara/Physics2D/RigidBody2D.hpp @@ -41,6 +41,7 @@ namespace Nz void EnableSimulation(bool simulation); Rectf GetAABB() const; + inline float GetAngularDamping() const; float GetAngularVelocity() const; Vector2f GetCenterOfGravity(CoordSys coordSys = CoordSys_Local) const; const Collider2DRef& GetGeom() const; @@ -59,6 +60,7 @@ namespace Nz bool IsSleeping() const; bool IsStatic() const; + inline void SetAngularDamping(float angularDamping); void SetAngularVelocity(float angularVelocity); void SetGeom(Collider2DRef geom, bool recomputeMoment = true); void SetMass(float mass, bool recomputeMoment = true); @@ -99,4 +101,6 @@ namespace Nz }; } +#include + #endif // NAZARA_RIGIDBODY2D_HPP diff --git a/include/Nazara/Physics2D/RigidBody2D.inl b/include/Nazara/Physics2D/RigidBody2D.inl new file mode 100644 index 000000000..603cc4e57 --- /dev/null +++ b/include/Nazara/Physics2D/RigidBody2D.inl @@ -0,0 +1,21 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Physics 2D module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include + +namespace Nz +{ + inline float RigidBody2D::GetAngularDamping() const + { + return GetMomentOfInertia(); + } + + inline void RigidBody2D::SetAngularDamping(float angularDamping) + { + SetMomentOfInertia(angularDamping); + } +} + +#include From d91c48ab5038dc092e5fa76e4b1e6d356ae8198b Mon Sep 17 00:00:00 2001 From: S6066 Date: Tue, 31 Jul 2018 13:24:28 +0200 Subject: [PATCH 087/194] Widgets: Force parent parameter to be present (#172) --- ChangeLog.md | 1 + SDK/include/NDK/Widgets/ButtonWidget.hpp | 2 +- SDK/include/NDK/Widgets/CheckboxWidget.hpp | 2 +- SDK/include/NDK/Widgets/ImageWidget.hpp | 2 +- SDK/include/NDK/Widgets/LabelWidget.hpp | 2 +- SDK/include/NDK/Widgets/ProgressBarWidget.hpp | 4 ++-- SDK/include/NDK/Widgets/TextAreaWidget.hpp | 2 +- 7 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 5bafdd7fc..ba7b3e637 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -179,6 +179,7 @@ Nazara Development Kit: - Fixed GraphicsComponent reflective material count which was not initialized - Added PhysicsComponent2D::ClosestPointQuery - Fix GraphicsComponent copy constructor not copying scissor rect +- Force parent parameter to be present in widgets constructor # 0.4: diff --git a/SDK/include/NDK/Widgets/ButtonWidget.hpp b/SDK/include/NDK/Widgets/ButtonWidget.hpp index 12fc12762..01eb4a90a 100644 --- a/SDK/include/NDK/Widgets/ButtonWidget.hpp +++ b/SDK/include/NDK/Widgets/ButtonWidget.hpp @@ -23,7 +23,7 @@ namespace Ndk class NDK_API ButtonWidget : public BaseWidget { public: - ButtonWidget(BaseWidget* parent = nullptr); + ButtonWidget(BaseWidget* parent); ButtonWidget(const ButtonWidget&) = delete; ButtonWidget(ButtonWidget&&) = default; ~ButtonWidget() = default; diff --git a/SDK/include/NDK/Widgets/CheckboxWidget.hpp b/SDK/include/NDK/Widgets/CheckboxWidget.hpp index 9d175fdbe..d8382ba02 100644 --- a/SDK/include/NDK/Widgets/CheckboxWidget.hpp +++ b/SDK/include/NDK/Widgets/CheckboxWidget.hpp @@ -28,7 +28,7 @@ namespace Ndk friend class Sdk; public: - CheckboxWidget(BaseWidget* parent = nullptr); + CheckboxWidget(BaseWidget* parent); CheckboxWidget(const CheckboxWidget&) = delete; CheckboxWidget(CheckboxWidget&&) = default; ~CheckboxWidget() = default; diff --git a/SDK/include/NDK/Widgets/ImageWidget.hpp b/SDK/include/NDK/Widgets/ImageWidget.hpp index 51fe4de87..93169c80d 100644 --- a/SDK/include/NDK/Widgets/ImageWidget.hpp +++ b/SDK/include/NDK/Widgets/ImageWidget.hpp @@ -19,7 +19,7 @@ namespace Ndk class NDK_API ImageWidget : public BaseWidget { public: - ImageWidget(BaseWidget* parent = nullptr); + ImageWidget(BaseWidget* parent); ImageWidget(const ImageWidget&) = delete; ImageWidget(ImageWidget&&) = default; ~ImageWidget() = default; diff --git a/SDK/include/NDK/Widgets/LabelWidget.hpp b/SDK/include/NDK/Widgets/LabelWidget.hpp index f4f43bf1e..f96960e15 100644 --- a/SDK/include/NDK/Widgets/LabelWidget.hpp +++ b/SDK/include/NDK/Widgets/LabelWidget.hpp @@ -21,7 +21,7 @@ namespace Ndk class NDK_API LabelWidget : public BaseWidget { public: - LabelWidget(BaseWidget* parent = nullptr); + LabelWidget(BaseWidget* parent); LabelWidget(const LabelWidget&) = delete; LabelWidget(LabelWidget&&) = default; ~LabelWidget() = default; diff --git a/SDK/include/NDK/Widgets/ProgressBarWidget.hpp b/SDK/include/NDK/Widgets/ProgressBarWidget.hpp index 2faa8093d..6e19aa0cd 100644 --- a/SDK/include/NDK/Widgets/ProgressBarWidget.hpp +++ b/SDK/include/NDK/Widgets/ProgressBarWidget.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2017 Samy Bensaid +// Copyright (C) 2017 Samy Bensaid // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequisites.hpp @@ -23,7 +23,7 @@ namespace Ndk friend class Sdk; public: - ProgressBarWidget(BaseWidget* parent = nullptr); + ProgressBarWidget(BaseWidget* parent); ProgressBarWidget(const ProgressBarWidget&) = delete; ProgressBarWidget(ProgressBarWidget&&) = default; ~ProgressBarWidget() = default; diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.hpp b/SDK/include/NDK/Widgets/TextAreaWidget.hpp index e7cdc2f7a..af5377e6f 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.hpp +++ b/SDK/include/NDK/Widgets/TextAreaWidget.hpp @@ -18,7 +18,7 @@ namespace Ndk class NDK_API TextAreaWidget : public BaseWidget { public: - TextAreaWidget(BaseWidget* parent = nullptr); + TextAreaWidget(BaseWidget* parent); TextAreaWidget(const TextAreaWidget&) = delete; TextAreaWidget(TextAreaWidget&&) = default; ~TextAreaWidget() = default; From 271f7202ed78f33de50b44c0b19d4701fd82025d Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 31 Jul 2018 19:49:51 +0200 Subject: [PATCH 088/194] Core/Unicode: Fix letters category --- src/Nazara/Core/Unicode.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Nazara/Core/Unicode.cpp b/src/Nazara/Core/Unicode.cpp index cec6dbba8..eac37dead 100644 --- a/src/Nazara/Core/Unicode.cpp +++ b/src/Nazara/Core/Unicode.cpp @@ -157,7 +157,7 @@ namespace Nz case 'X': case 'Y': case 'Z': - return Category_Number_DecimalDigit; + return Category_Letter_Uppercase; case '_': return Category_Punctuation_Connector; @@ -192,7 +192,7 @@ namespace Nz case 'x': case 'y': case 'z': - return Category_Number_DecimalDigit; + return Category_Letter_Lowercase; default: break; From 4a09de7e0be6c006131378673f6d75af2c51c7c8 Mon Sep 17 00:00:00 2001 From: S6066 Date: Wed, 1 Aug 2018 23:12:02 +0200 Subject: [PATCH 089/194] String::FindLast/FindWord: Fix bug where index wouldn't be used (#177) * String::FindLast/FindWord: Fix bug where index wouldn't be used * Log change --- ChangeLog.md | 1 + src/Nazara/Core/String.cpp | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index ba7b3e637..149c75d44 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -127,6 +127,7 @@ Nazara Engine: - ⚠️ Fixed compilation errors on MSVC with flag /permissive- on CullingList class - Added LuaImplQueryArg & LuaImplReplyVal functions for Vector[2|3] - Fixed bug in ENet implementation causing legit reliable packets to be dropped on sequence number overflow +- Fixed bug where index wouldn't be used in String::FindLast and String::FindWord Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Core/String.cpp b/src/Nazara/Core/String.cpp index 9e4e2ae32..351b1c91d 100644 --- a/src/Nazara/Core/String.cpp +++ b/src/Nazara/Core/String.cpp @@ -976,7 +976,7 @@ namespace Nz if (pos >= m_sharedString->size) return npos; - char* ptr = &m_sharedString->string[m_sharedString->size-1]; + char* ptr = &m_sharedString->string[pos]; if (flags & CaseInsensitive) { @@ -1751,7 +1751,7 @@ namespace Nz return npos; ///Algo 3.FindWord#3 (Size of the pattern unknown) - const char* ptr = m_sharedString->string.get(); + const char* ptr = &m_sharedString->string[pos]; if (flags & HandleUtf8) { if (utf8::internal::is_trail(*ptr)) @@ -1931,7 +1931,7 @@ namespace Nz if (pos >= m_sharedString->size) return npos; - char* ptr = m_sharedString->string.get(); + char* ptr = &m_sharedString->string[pos]; if (flags & HandleUtf8) { ///Algo 3.FindWord#3 (Iterator too slow for #2) From 2f3f02b2fc8ec97d90e04393ade1b2d872d3eb55 Mon Sep 17 00:00:00 2001 From: Faymoon Date: Thu, 2 Aug 2018 11:25:57 +0200 Subject: [PATCH 090/194] Update Physics2D Component and Body (#178) * Update * Add: [Get/Set]AngularDaming for standardization * Fix: Name error * Add: [Get/Set][AngularDamping/MomentOfInertia] in PhysicsComponent2D * Forgot in last commit * Add: param coordSys in [PhysicsComponent2D/RigidBody2D]::SetMassCenter * Add: Some forgotten inline * Fix little error * Fix: Indentation before case * Move and Change GetCenterOfGravity --- .../NDK/Components/PhysicsComponent2D.hpp | 46 +++++----- .../NDK/Components/PhysicsComponent2D.inl | 85 ++++++++++++++++++- include/Nazara/Physics2D/RigidBody2D.hpp | 6 +- include/Nazara/Physics2D/RigidBody2D.inl | 5 ++ src/Nazara/Physics2D/RigidBody2D.cpp | 38 ++++++--- 5 files changed, 143 insertions(+), 37 deletions(-) diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.hpp b/SDK/include/NDK/Components/PhysicsComponent2D.hpp index efd30602a..c1a741153 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.hpp +++ b/SDK/include/NDK/Components/PhysicsComponent2D.hpp @@ -24,30 +24,36 @@ namespace Ndk PhysicsComponent2D(const PhysicsComponent2D& physics); ~PhysicsComponent2D() = default; - void AddForce(const Nz::Vector2f& force, Nz::CoordSys coordSys = Nz::CoordSys_Global); - void AddForce(const Nz::Vector2f& force, const Nz::Vector2f& point, Nz::CoordSys coordSys = Nz::CoordSys_Global); - void AddImpulse(const Nz::Vector2f& impulse, Nz::CoordSys coordSys = Nz::CoordSys_Global); - void AddImpulse(const Nz::Vector2f& impulse, const Nz::Vector2f& point, Nz::CoordSys coordSys = Nz::CoordSys_Global); - void AddTorque(float torque); + inline void AddForce(const Nz::Vector2f& force, Nz::CoordSys coordSys = Nz::CoordSys_Global); + inline void AddForce(const Nz::Vector2f& force, const Nz::Vector2f& point, Nz::CoordSys coordSys = Nz::CoordSys_Global); + inline void AddImpulse(const Nz::Vector2f& impulse, Nz::CoordSys coordSys = Nz::CoordSys_Global); + inline void AddImpulse(const Nz::Vector2f& impulse, const Nz::Vector2f& point, Nz::CoordSys coordSys = Nz::CoordSys_Global); + inline void AddTorque(float torque); - bool ClosestPointQuery(const Nz::Vector2f& position, Nz::Vector2f* closestPoint, float* closestDistance) const; + inline bool ClosestPointQuery(const Nz::Vector2f& position, Nz::Vector2f* closestPoint, float* closestDistance) const; - Nz::Rectf GetAABB() const; - float GetAngularVelocity() const; - Nz::Vector2f GetCenterOfGravity(Nz::CoordSys coordSys = Nz::CoordSys_Local) const; - float GetMass() const; - Nz::Vector2f GetPosition() const; - float GetRotation() const; - Nz::Vector2f GetVelocity() const; + inline Nz::Rectf GetAABB() const; + inline float GetAngularDamping() const; + inline float GetAngularVelocity() const; + NAZARA_DEPRECATED("Name error, please use GetMassCenter") + inline Nz::Vector2f GetCenterOfGravity(Nz::CoordSys coordSys = Nz::CoordSys_Local) const; + inline float GetMass() const; + inline Nz::Vector2f GetMassCenter(Nz::CoordSys coordSys = Nz::CoordSys_Local) const; + inline float GetMomentOfInertia() const; + inline Nz::Vector2f GetPosition() const; + inline float GetRotation() const; + inline Nz::Vector2f GetVelocity() const; - bool IsSleeping() const; + inline bool IsSleeping() const; - void SetAngularVelocity(float angularVelocity); - void SetMass(float mass); - void SetMassCenter(const Nz::Vector2f& center); - void SetPosition(const Nz::Vector2f& position); - void SetRotation(float rotation); - void SetVelocity(const Nz::Vector2f& velocity); + inline void SetAngularDamping(float angularDamping); + inline void SetAngularVelocity(float angularVelocity); + inline void SetMass(float mass); + inline void SetMassCenter(const Nz::Vector2f& center, Nz::CoordSys coordSys = Nz::CoordSys_Local); + inline void SetMomentOfInertia(float moment); + inline void SetPosition(const Nz::Vector2f& position); + inline void SetRotation(float rotation); + inline void SetVelocity(const Nz::Vector2f& velocity); static ComponentIndex componentIndex; diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.inl b/SDK/include/NDK/Components/PhysicsComponent2D.inl index b6628467d..3105a85ea 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.inl +++ b/SDK/include/NDK/Components/PhysicsComponent2D.inl @@ -128,6 +128,22 @@ namespace Ndk return m_object->GetAABB(); } + /*! + * \brief Gets the angular damping or moment of inertia of the physics object + * \return Angular damping of the object + * + * \remark Produces a NazaraAssert if the physics object is invalid + * + * \see GetMomentOfInertia + */ + + inline float PhysicsComponent2D::GetAngularDamping() const + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->GetAngularDamping(); + } + /*! * \brief Gets the angular velocity of the physics object * \return Angular velocity of the object @@ -172,6 +188,38 @@ namespace Ndk return m_object->GetMass(); } + /*! + * \brief Gets the gravity center of the physics object + * \return Gravity center of the object + * + * \param coordSys System coordinates to consider + * + * \remark Produces a NazaraAssert if the physics object is invalid + */ + + inline Nz::Vector2f PhysicsComponent2D::GetMassCenter(Nz::CoordSys coordSys) const + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->GetMassCenter(coordSys); + } + + /*! + * \brief Gets the angular damping or moment of inertia of the physics object + * \return Moment of inertia of the object + * + * \remark Produces a NazaraAssert if the physics object is invalid + * + * \see GetAngularDamping + */ + + inline float PhysicsComponent2D::GetMomentOfInertia() const + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->GetMomentOfInertia(); + } + /*! * \brief Gets the position of the physics object * \return Position of the object @@ -228,6 +276,23 @@ namespace Ndk return m_object->IsSleeping(); } + /*! + * \brief Sets the angular damping or moment of inertia of the physics object + * + * \param angularDamping Angular damping of the object + * + * \remark Produces a NazaraAssert if the physics object is invalid + * + * \see SetMomentOfInertia + */ + + inline void PhysicsComponent2D::SetAngularDamping(float angularDamping) + { + NazaraAssert(m_object, "Invalid physics object"); + + m_object->SetAngularDamping(angularDamping); + } + /*! * \brief Sets the angular velocity of the physics object * @@ -268,11 +333,27 @@ namespace Ndk * \remark Produces a NazaraAssert if the physics object is invalid */ - inline void PhysicsComponent2D::SetMassCenter(const Nz::Vector2f& center) + inline void PhysicsComponent2D::SetMassCenter(const Nz::Vector2f& center, Nz::CoordSys coordSys) { NazaraAssert(m_object, "Invalid physics object"); - m_object->SetMassCenter(center); + m_object->SetMassCenter(center, coordSys); + } + /*! + * \brief Sets the angular damping or moment of inertia of the physics object + * + * \param moment Moment of inertia of the object + * + * \remark Produces a NazaraAssert if the physics object is invalid + * + * \see SetAngularDamping + */ + + inline void PhysicsComponent2D::SetMomentOfInertia(float moment) + { + NazaraAssert(m_object, "Invalid physics object"); + + m_object->SetMomentOfInertia(moment); } /*! diff --git a/include/Nazara/Physics2D/RigidBody2D.hpp b/include/Nazara/Physics2D/RigidBody2D.hpp index f8df42a8a..30eac8f43 100644 --- a/include/Nazara/Physics2D/RigidBody2D.hpp +++ b/include/Nazara/Physics2D/RigidBody2D.hpp @@ -43,10 +43,12 @@ namespace Nz Rectf GetAABB() const; inline float GetAngularDamping() const; float GetAngularVelocity() const; - Vector2f GetCenterOfGravity(CoordSys coordSys = CoordSys_Local) const; + NAZARA_DEPRECATED("Name error, please use GetMassCenter") + inline Vector2f GetCenterOfGravity(CoordSys coordSys = CoordSys_Local) const; const Collider2DRef& GetGeom() const; cpBody* GetHandle() const; float GetMass() const; + Vector2f GetMassCenter(CoordSys coordSys = CoordSys_Local) const; float GetMomentOfInertia() const; Vector2f GetPosition() const; float GetRotation() const; @@ -64,7 +66,7 @@ namespace Nz void SetAngularVelocity(float angularVelocity); void SetGeom(Collider2DRef geom, bool recomputeMoment = true); void SetMass(float mass, bool recomputeMoment = true); - void SetMassCenter(const Vector2f& center); + void SetMassCenter(const Vector2f& center, CoordSys coordSys = CoordSys_Local); void SetMomentOfInertia(float moment); void SetPosition(const Vector2f& position); void SetRotation(float rotation); diff --git a/include/Nazara/Physics2D/RigidBody2D.inl b/include/Nazara/Physics2D/RigidBody2D.inl index 603cc4e57..faebd017d 100644 --- a/include/Nazara/Physics2D/RigidBody2D.inl +++ b/include/Nazara/Physics2D/RigidBody2D.inl @@ -12,6 +12,11 @@ namespace Nz return GetMomentOfInertia(); } + inline Vector2f RigidBody2D::GetCenterOfGravity(CoordSys coordSys) const + { + return GetMassCenter(coordSys); + } + inline void RigidBody2D::SetAngularDamping(float angularDamping) { SetMomentOfInertia(angularDamping); diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index c2cb31c4f..76844db3b 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -87,7 +87,7 @@ namespace Nz void RigidBody2D::AddForce(const Vector2f& force, CoordSys coordSys) { - return AddForce(force, GetCenterOfGravity(coordSys), coordSys); + return AddForce(force, GetMassCenter(coordSys), coordSys); } void RigidBody2D::AddForce(const Vector2f& force, const Vector2f& point, CoordSys coordSys) @@ -106,7 +106,7 @@ namespace Nz void RigidBody2D::AddImpulse(const Vector2f& impulse, CoordSys coordSys) { - return AddImpulse(impulse, GetCenterOfGravity(coordSys), coordSys); + return AddImpulse(impulse, GetMassCenter(coordSys), coordSys); } void RigidBody2D::AddImpulse(const Vector2f& impulse, const Vector2f& point, CoordSys coordSys) @@ -205,26 +205,26 @@ namespace Nz return m_mass; } - float RigidBody2D::GetMomentOfInertia() const + Vector2f RigidBody2D::GetMassCenter(CoordSys coordSys) const { - return float(cpBodyGetMoment(m_handle)); - } - - Vector2f RigidBody2D::GetCenterOfGravity(CoordSys coordSys) const - { - cpVect cog = cpBodyGetCenterOfGravity(m_handle); + cpVect massCenter = cpBodyGetCenterOfGravity(m_handle); switch (coordSys) { case CoordSys_Global: - cog = cpBodyLocalToWorld(m_handle, cog); + massCenter = cpBodyLocalToWorld(m_handle, massCenter); break; case CoordSys_Local: break; // Nothing to do } - return Vector2f(static_cast(cog.x), static_cast(cog.y)); + return Vector2f(static_cast(massCenter.x), static_cast(massCenter.y)); + } + + float RigidBody2D::GetMomentOfInertia() const + { + return float(cpBodyGetMoment(m_handle)); } Vector2f RigidBody2D::GetPosition() const @@ -362,9 +362,21 @@ namespace Nz m_mass = mass; } - void RigidBody2D::SetMassCenter(const Vector2f& center) + void RigidBody2D::SetMassCenter(const Vector2f& center, CoordSys coordSys) { - cpBodySetCenterOfGravity(m_handle, cpv(center.x, center.y)); + cpVect massCenter = cpv(center.x, center.y); + + switch (coordSys) + { + case CoordSys_Global: + massCenter = cpBodyWorldToLocal(m_handle, massCenter); + break; + + case CoordSys_Local: + break; // Nothing to do + } + + cpBodySetCenterOfGravity(m_handle, massCenter); } void RigidBody2D::SetMomentOfInertia(float moment) From b92e23fcd67a831e873920d17a49f7e07b345308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 2 Aug 2018 15:42:14 +0200 Subject: [PATCH 091/194] Physics2D: Add Arbiter2D --- ChangeLog.md | 1 + include/Nazara/Physics2D/Arbiter2D.hpp | 57 +++++++++++++++ include/Nazara/Physics2D/Arbiter2D.inl | 17 +++++ include/Nazara/Physics2D/PhysWorld2D.hpp | 10 +-- src/Nazara/Physics2D/Arbiter2D.cpp | 89 ++++++++++++++++++++++++ src/Nazara/Physics2D/PhysWorld2D.cpp | 17 +++-- 6 files changed, 183 insertions(+), 8 deletions(-) create mode 100644 include/Nazara/Physics2D/Arbiter2D.hpp create mode 100644 include/Nazara/Physics2D/Arbiter2D.inl create mode 100644 src/Nazara/Physics2D/Arbiter2D.cpp diff --git a/ChangeLog.md b/ChangeLog.md index 149c75d44..4cd68d12a 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -128,6 +128,7 @@ Nazara Engine: - Added LuaImplQueryArg & LuaImplReplyVal functions for Vector[2|3] - Fixed bug in ENet implementation causing legit reliable packets to be dropped on sequence number overflow - Fixed bug where index wouldn't be used in String::FindLast and String::FindWord +- Physics 2D contact callbacks now include an arbiter allowing to query/set parameters about the collision Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Physics2D/Arbiter2D.hpp b/include/Nazara/Physics2D/Arbiter2D.hpp new file mode 100644 index 000000000..64c38dd8d --- /dev/null +++ b/include/Nazara/Physics2D/Arbiter2D.hpp @@ -0,0 +1,57 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Physics 2D module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_ARBITER2D_HPP +#define NAZARA_ARBITER2D_HPP + +#include +#include +#include +#include + +struct cpArbiter; + +namespace Nz +{ + class NAZARA_PHYSICS2D_API Arbiter2D + { + public: + inline Arbiter2D(cpArbiter* arbiter); + Arbiter2D(const Arbiter2D&) = delete; + Arbiter2D(Arbiter2D&&) = default; + ~Arbiter2D() = default; + + float ComputeTotalKinematicEnergy() const; + Nz::Vector2f ComputeTotalImpulse() const; + + std::size_t GetContactCount() const; + float GetContactDepth(std::size_t i) const; + Nz::Vector2f GetContactPointA(std::size_t i) const; + Nz::Vector2f GetContactPointB(std::size_t i) const; + + float GetElasticity() const; + float GetFriction() const; + Nz::Vector2f GetNormal() const; + Nz::Vector2f GetSurfaceVelocity() const; + + bool IsFirstContact() const; + bool IsRemoval() const; + + void SetElasticity(float elasticity); + void SetFriction(float friction); + void SetSurfaceVelocity(const Nz::Vector2f& surfaceVelocity); + + Arbiter2D& operator=(const Arbiter2D&) = delete; + Arbiter2D& operator=(Arbiter2D&&) = default; + + private: + MovablePtr m_arbiter; + }; +} + +#include + +#endif // NAZARA_ARBITER2D_HPP diff --git a/include/Nazara/Physics2D/Arbiter2D.inl b/include/Nazara/Physics2D/Arbiter2D.inl new file mode 100644 index 000000000..5e6b3edf6 --- /dev/null +++ b/include/Nazara/Physics2D/Arbiter2D.inl @@ -0,0 +1,17 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Physics 2D module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include + +namespace Nz +{ + inline Arbiter2D::Arbiter2D(cpArbiter* arbiter) : + m_arbiter(arbiter) + { + } +} + +#include diff --git a/include/Nazara/Physics2D/PhysWorld2D.hpp b/include/Nazara/Physics2D/PhysWorld2D.hpp index 301e73563..3e726de00 100644 --- a/include/Nazara/Physics2D/PhysWorld2D.hpp +++ b/include/Nazara/Physics2D/PhysWorld2D.hpp @@ -22,14 +22,16 @@ struct cpSpace; namespace Nz { + class Arbiter2D; + class NAZARA_PHYSICS2D_API PhysWorld2D { friend RigidBody2D; - using ContactEndCallback = std::function; - using ContactPreSolveCallback = std::function; - using ContactPostSolveCallback = std::function; - using ContactStartCallback = std::function; + using ContactEndCallback = std::function; + using ContactPreSolveCallback = std::function; + using ContactPostSolveCallback = std::function; + using ContactStartCallback = std::function; using DebugDrawCircleCallback = std::function; using DebugDrawDotCallback = std::function; diff --git a/src/Nazara/Physics2D/Arbiter2D.cpp b/src/Nazara/Physics2D/Arbiter2D.cpp new file mode 100644 index 000000000..8a1243d26 --- /dev/null +++ b/src/Nazara/Physics2D/Arbiter2D.cpp @@ -0,0 +1,89 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Physics 2D module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include + +namespace Nz +{ + float Nz::Arbiter2D::ComputeTotalKinematicEnergy() const + { + return float(cpArbiterTotalKE(m_arbiter)); + } + + Nz::Vector2f Arbiter2D::ComputeTotalImpulse() const + { + cpVect impulse = cpArbiterTotalImpulse(m_arbiter); + return Nz::Vector2f(Nz::Vector2(impulse.x, impulse.y)); + } + + std::size_t Arbiter2D::GetContactCount() const + { + return cpArbiterGetCount(m_arbiter); + } + + float Arbiter2D::GetContactDepth(std::size_t i) const + { + return cpArbiterGetDepth(m_arbiter, int(i)); + } + + Nz::Vector2f Arbiter2D::GetContactPointA(std::size_t i) const + { + cpVect point = cpArbiterGetPointA(m_arbiter, int(i)); + return Nz::Vector2f(Nz::Vector2(point.x, point.y)); + } + + Nz::Vector2f Arbiter2D::GetContactPointB(std::size_t i) const + { + cpVect point = cpArbiterGetPointB(m_arbiter, int(i)); + return Nz::Vector2f(Nz::Vector2(point.x, point.y)); + } + + float Arbiter2D::GetElasticity() const + { + return float(cpArbiterGetRestitution(m_arbiter)); + } + float Arbiter2D::GetFriction() const + { + return float(cpArbiterGetFriction(m_arbiter)); + } + + Nz::Vector2f Arbiter2D::GetNormal() const + { + cpVect normal = cpArbiterGetNormal(m_arbiter); + return Nz::Vector2f(Nz::Vector2(normal.x, normal.y)); + } + + Nz::Vector2f Arbiter2D::GetSurfaceVelocity() const + { + cpVect velocity = cpArbiterGetNormal(m_arbiter); + return Nz::Vector2f(Nz::Vector2(velocity.x, velocity.y)); + } + + bool Arbiter2D::IsFirstContact() const + { + return cpArbiterIsFirstContact(m_arbiter) == cpTrue; + } + + bool Arbiter2D::IsRemoval() const + { + return cpArbiterIsRemoval(m_arbiter) == cpTrue; + } + + void Arbiter2D::SetElasticity(float elasticity) + { + cpArbiterSetRestitution(m_arbiter, elasticity); + } + + void Arbiter2D::SetFriction(float friction) + { + cpArbiterSetFriction(m_arbiter, friction); + } + + void Arbiter2D::SetSurfaceVelocity(const Nz::Vector2f& surfaceVelocity) + { + cpArbiterSetSurfaceVelocity(m_arbiter, cpv(surfaceVelocity.x, surfaceVelocity.y)); + } +} diff --git a/src/Nazara/Physics2D/PhysWorld2D.cpp b/src/Nazara/Physics2D/PhysWorld2D.cpp index b967e63e5..764ca1cf8 100644 --- a/src/Nazara/Physics2D/PhysWorld2D.cpp +++ b/src/Nazara/Physics2D/PhysWorld2D.cpp @@ -3,6 +3,7 @@ // For conditions of distribution and use, see copyright notice in Config.hpp #include +#include #include #include #include @@ -358,8 +359,10 @@ namespace Nz RigidBody2D* firstRigidBody = static_cast(cpBodyGetUserData(firstBody)); RigidBody2D* secondRigidBody = static_cast(cpBodyGetUserData(secondBody)); + Arbiter2D arbiter(arb); + const Callback* customCallbacks = static_cast(data); - if (customCallbacks->startCallback(*world, *firstRigidBody, *secondRigidBody, customCallbacks->userdata)) + if (customCallbacks->startCallback(*world, arbiter, *firstRigidBody, *secondRigidBody, customCallbacks->userdata)) { cpBool retA = cpArbiterCallWildcardBeginA(arb, space); cpBool retB = cpArbiterCallWildcardBeginB(arb, space); @@ -382,8 +385,10 @@ namespace Nz RigidBody2D* firstRigidBody = static_cast(cpBodyGetUserData(firstBody)); RigidBody2D* secondRigidBody = static_cast(cpBodyGetUserData(secondBody)); + Arbiter2D arbiter(arb); + const Callback* customCallbacks = static_cast(data); - customCallbacks->endCallback(*world, *firstRigidBody, *secondRigidBody, customCallbacks->userdata); + customCallbacks->endCallback(*world, arbiter, *firstRigidBody, *secondRigidBody, customCallbacks->userdata); cpArbiterCallWildcardSeparateA(arb, space); cpArbiterCallWildcardSeparateB(arb, space); @@ -402,8 +407,10 @@ namespace Nz RigidBody2D* firstRigidBody = static_cast(cpBodyGetUserData(firstBody)); RigidBody2D* secondRigidBody = static_cast(cpBodyGetUserData(secondBody)); + Arbiter2D arbiter(arb); + const Callback* customCallbacks = static_cast(data); - if (customCallbacks->preSolveCallback(*world, *firstRigidBody, *secondRigidBody, customCallbacks->userdata)) + if (customCallbacks->preSolveCallback(*world, arbiter, *firstRigidBody, *secondRigidBody, customCallbacks->userdata)) { cpBool retA = cpArbiterCallWildcardPreSolveA(arb, space); cpBool retB = cpArbiterCallWildcardPreSolveB(arb, space); @@ -426,8 +433,10 @@ namespace Nz RigidBody2D* firstRigidBody = static_cast(cpBodyGetUserData(firstBody)); RigidBody2D* secondRigidBody = static_cast(cpBodyGetUserData(secondBody)); + Arbiter2D arbiter(arb); + const Callback* customCallbacks = static_cast(data); - customCallbacks->postSolveCallback(*world, *firstRigidBody, *secondRigidBody, customCallbacks->userdata); + customCallbacks->postSolveCallback(*world, arbiter, *firstRigidBody, *secondRigidBody, customCallbacks->userdata); cpArbiterCallWildcardPostSolveA(arb, space); cpArbiterCallWildcardPostSolveB(arb, space); From 6ab4a676c253f42cde3b7403210152bfe908096a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 2 Aug 2018 15:43:18 +0200 Subject: [PATCH 092/194] Fix deprecation warning --- SDK/include/NDK/Components/PhysicsComponent2D.inl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.inl b/SDK/include/NDK/Components/PhysicsComponent2D.inl index 3105a85ea..bd550c41b 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.inl +++ b/SDK/include/NDK/Components/PhysicsComponent2D.inl @@ -171,7 +171,7 @@ namespace Ndk { NazaraAssert(m_object, "Invalid physics object"); - return m_object->GetCenterOfGravity(coordSys); + return m_object->GetMassCenter(coordSys); } /*! From 46e3de90ed454167c9ed5cd10df5690ec08a6e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 2 Aug 2018 15:49:29 +0200 Subject: [PATCH 093/194] Fix units tests :derp: --- tests/Engine/Physics2D/PhysWorld2D.cpp | 12 ++++++------ tests/Engine/Physics2D/RigidBody2D.cpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/Engine/Physics2D/PhysWorld2D.cpp b/tests/Engine/Physics2D/PhysWorld2D.cpp index 4f492a9c0..e71c9f2cb 100644 --- a/tests/Engine/Physics2D/PhysWorld2D.cpp +++ b/tests/Engine/Physics2D/PhysWorld2D.cpp @@ -131,29 +131,29 @@ SCENARIO("PhysWorld2D", "[PHYSICS2D][PHYSWORLD2D]") int statusTriggerCollision = 0; Nz::PhysWorld2D::Callback characterTriggerCallback; - characterTriggerCallback.startCallback = [&](Nz::PhysWorld2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) -> bool { + characterTriggerCallback.startCallback = [&](Nz::PhysWorld2D&, Nz::Arbiter2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) -> bool { statusTriggerCollision = statusTriggerCollision | 1 << 0; return true; }; - characterTriggerCallback.preSolveCallback = [&](Nz::PhysWorld2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) -> bool { + characterTriggerCallback.preSolveCallback = [&](Nz::PhysWorld2D&, Nz::Arbiter2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) -> bool { statusTriggerCollision = statusTriggerCollision | 1 << 1; return true; }; - characterTriggerCallback.postSolveCallback = [&](Nz::PhysWorld2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) { + characterTriggerCallback.postSolveCallback = [&](Nz::PhysWorld2D&, Nz::Arbiter2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) { statusTriggerCollision = statusTriggerCollision | 1 << 2; }; - characterTriggerCallback.endCallback = [&](Nz::PhysWorld2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) { + characterTriggerCallback.endCallback = [&](Nz::PhysWorld2D&, Nz::Arbiter2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) { statusTriggerCollision = statusTriggerCollision | 1 << 3; }; world.RegisterCallbacks(CHARACTER_COLLISION_ID, TRIGGER_COLLISION_ID, characterTriggerCallback); int statusWallCollision = 0; Nz::PhysWorld2D::Callback characterWallCallback; - characterWallCallback.startCallback = [&](Nz::PhysWorld2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) -> bool { + characterWallCallback.startCallback = [&](Nz::PhysWorld2D&, Nz::Arbiter2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) -> bool { statusWallCollision = statusWallCollision | 1 << 0; return true; }; - characterWallCallback.endCallback = [&](Nz::PhysWorld2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) { + characterWallCallback.endCallback = [&](Nz::PhysWorld2D&, Nz::Arbiter2D&, Nz::RigidBody2D&, Nz::RigidBody2D&, void*) { statusWallCollision = statusWallCollision | 1 << 1; }; world.RegisterCallbacks(CHARACTER_COLLISION_ID, WALL_COLLISION_ID, characterWallCallback); diff --git a/tests/Engine/Physics2D/RigidBody2D.cpp b/tests/Engine/Physics2D/RigidBody2D.cpp index c2b05438a..0da831cfc 100644 --- a/tests/Engine/Physics2D/RigidBody2D.cpp +++ b/tests/Engine/Physics2D/RigidBody2D.cpp @@ -317,7 +317,7 @@ void EQUALITY(const Nz::RigidBody2D& left, const Nz::RigidBody2D& right) { CHECK(left.GetAABB() == right.GetAABB()); CHECK(left.GetAngularVelocity() == Approx(right.GetAngularVelocity())); - CHECK(left.GetCenterOfGravity() == right.GetCenterOfGravity()); + CHECK(left.GetMassCenter() == right.GetMassCenter()); CHECK(left.GetGeom() == right.GetGeom()); CHECK(left.GetHandle() != right.GetHandle()); CHECK(left.GetMass() == Approx(right.GetMass())); From 05f277deeb8ef72d919a8053cbce3bfa2f484e23 Mon Sep 17 00:00:00 2001 From: S6066 Date: Fri, 3 Aug 2018 08:43:48 +0200 Subject: [PATCH 094/194] Ndk/TextAreaWidget: Add possibility to write only one specific character category (#174) * Ndk/TextAreaWidget: Add possibility to write only one specific character category * Add support for multiple categories * Use a predicate instead of an enum * Log change * String::FindLast/FindWord: Fix bug where index wouldn't be used (#177) * String::FindLast/FindWord: Fix bug where index wouldn't be used * Log change * Update Physics2D Component and Body (#178) * Update * Add: [Get/Set]AngularDaming for standardization * Fix: Name error * Add: [Get/Set][AngularDamping/MomentOfInertia] in PhysicsComponent2D * Forgot in last commit * Add: param coordSys in [PhysicsComponent2D/RigidBody2D]::SetMassCenter * Add: Some forgotten inline * Fix little error * Fix: Indentation before case * Move and Change GetCenterOfGravity * Physics2D: Add Arbiter2D * Fix deprecation warning * Fix units tests :derp: * Fixies --- ChangeLog.md | 5 +++-- SDK/include/NDK/Widgets/TextAreaWidget.hpp | 6 ++++++ SDK/include/NDK/Widgets/TextAreaWidget.inl | 10 ++++++++++ SDK/src/NDK/Widgets/TextAreaWidget.cpp | 3 ++- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 4cd68d12a..f50db11c2 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -177,11 +177,12 @@ Nazara Development Kit: - ⚠️ TextAreaWidget::GetHoveredGlyph now returns a two-dimensional position instead of a single glyph position - Fixed Entity::OnEntityDestruction signal not being properly moved and thus not being called. - Fixed EntityOwner move assignment which was losing entity ownership -- Add GraphicsComponent:ForEachRenderable method +- Added GraphicsComponent:ForEachRenderable method - Fixed GraphicsComponent reflective material count which was not initialized - Added PhysicsComponent2D::ClosestPointQuery -- Fix GraphicsComponent copy constructor not copying scissor rect +- Fixed GraphicsComponent copy constructor not copying scissor rect - Force parent parameter to be present in widgets constructor +- Added the possibility to write only specific characters with a predicate in TextAreaWidget # 0.4: diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.hpp b/SDK/include/NDK/Widgets/TextAreaWidget.hpp index af5377e6f..4c3168c4e 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.hpp +++ b/SDK/include/NDK/Widgets/TextAreaWidget.hpp @@ -12,12 +12,15 @@ #include #include #include +#include namespace Ndk { class NDK_API TextAreaWidget : public BaseWidget { public: + using CharacterFilter = std::function; + TextAreaWidget(BaseWidget* parent); TextAreaWidget(const TextAreaWidget&) = delete; TextAreaWidget(TextAreaWidget&&) = default; @@ -33,6 +36,7 @@ namespace Ndk void EraseSelection(); + inline CharacterFilter GetCharacterFilter() const; inline unsigned int GetCharacterSize() const; inline const Nz::Vector2ui& GetCursorPosition() const; inline Nz::Vector2ui GetCursorPosition(std::size_t glyphIndex) const; @@ -54,6 +58,7 @@ namespace Ndk void ResizeToContent() override; + inline void SetCharacterFilter(CharacterFilter filter); inline void SetCharacterSize(unsigned int characterSize); inline void SetCursorPosition(std::size_t glyphIndex); inline void SetCursorPosition(Nz::Vector2ui cursorPosition); @@ -96,6 +101,7 @@ namespace Ndk void RefreshCursor(); void UpdateDisplayText(); + std::function m_characterFilter; EchoMode m_echoMode; EntityHandle m_cursorEntity; EntityHandle m_textEntity; diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.inl b/SDK/include/NDK/Widgets/TextAreaWidget.inl index 274d46a02..7b49ddb26 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.inl +++ b/SDK/include/NDK/Widgets/TextAreaWidget.inl @@ -23,6 +23,11 @@ namespace Ndk m_multiLineEnabled = enable; } + inline TextAreaWidget::CharacterFilter TextAreaWidget::GetCharacterFilter() const + { + return m_characterFilter; + } + inline unsigned int TextAreaWidget::GetCharacterSize() const { return m_drawer.GetCharacterSize(); @@ -140,6 +145,11 @@ namespace Ndk SetCursorPosition(cursorPosition); } + inline void TextAreaWidget::SetCharacterFilter(CharacterFilter filter) + { + m_characterFilter = filter; + } + inline void TextAreaWidget::SetCharacterSize(unsigned int characterSize) { m_drawer.SetCharacterSize(characterSize); diff --git a/SDK/src/NDK/Widgets/TextAreaWidget.cpp b/SDK/src/NDK/Widgets/TextAreaWidget.cpp index f10f57953..bf35c726e 100644 --- a/SDK/src/NDK/Widgets/TextAreaWidget.cpp +++ b/SDK/src/NDK/Widgets/TextAreaWidget.cpp @@ -11,6 +11,7 @@ namespace Ndk { TextAreaWidget::TextAreaWidget(BaseWidget* parent) : BaseWidget(parent), + m_characterFilter(), m_echoMode(EchoMode_Normal), m_cursorPositionBegin(0U, 0U), m_cursorPositionEnd(0U, 0U), @@ -394,7 +395,7 @@ namespace Ndk default: { - if (Nz::Unicode::GetCategory(character) == Nz::Unicode::Category_Other_Control) + if (Nz::Unicode::GetCategory(character) == Nz::Unicode::Category_Other_Control || (m_characterFilter && !m_characterFilter(character))) break; if (HasSelection()) From cf24b8abe44969c09f8cc0a69d4833c8681e5f52 Mon Sep 17 00:00:00 2001 From: S6066 Date: Fri, 3 Aug 2018 08:45:42 +0200 Subject: [PATCH 095/194] TextAreaWidget: Implement movement with Ctrl key (#176) * TextAreaWidget: Implement movement with Ctrl key * whoops, remove useless comments * Fixies --- ChangeLog.md | 1 + SDK/src/NDK/Widgets/TextAreaWidget.cpp | 55 ++++++++++++++++++++++++-- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index f50db11c2..8514bbf26 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -129,6 +129,7 @@ Nazara Engine: - Fixed bug in ENet implementation causing legit reliable packets to be dropped on sequence number overflow - Fixed bug where index wouldn't be used in String::FindLast and String::FindWord - Physics 2D contact callbacks now include an arbiter allowing to query/set parameters about the collision +- Added movement with Ctrl in TextAreaWidget Nazara Development Kit: - Added ImageWidget (#139) diff --git a/SDK/src/NDK/Widgets/TextAreaWidget.cpp b/SDK/src/NDK/Widgets/TextAreaWidget.cpp index bf35c726e..334a78079 100644 --- a/SDK/src/NDK/Widgets/TextAreaWidget.cpp +++ b/SDK/src/NDK/Widgets/TextAreaWidget.cpp @@ -225,8 +225,12 @@ namespace Ndk if (ignoreDefaultAction) return true; - const auto& lineInfo = m_drawer.GetLine(m_cursorPositionEnd.y); - SetCursorPosition({ static_cast(m_drawer.GetLineGlyphCount(m_cursorPositionEnd.y)), m_cursorPositionEnd.y }); + std::size_t lineCount = m_drawer.GetLineCount(); + if (key.control && lineCount > 0) + SetCursorPosition({ static_cast(m_drawer.GetLineGlyphCount(lineCount - 1)), static_cast(lineCount - 1) }); + else + SetCursorPosition({ static_cast(m_drawer.GetLineGlyphCount(m_cursorPositionEnd.y)), m_cursorPositionEnd.y }); + return true; } @@ -238,7 +242,7 @@ namespace Ndk if (ignoreDefaultAction) return true; - SetCursorPosition({ 0U, m_cursorPositionEnd.y }); + SetCursorPosition({ 0U, key.control ? 0U : m_cursorPositionEnd.y }); return true; } @@ -252,6 +256,28 @@ namespace Ndk if (HasSelection()) SetCursorPosition(m_cursorPositionBegin); + else if (key.control) + { + std::size_t index = GetGlyphIndex(m_cursorPositionBegin); + + if (index == 0) + return true; + + std::size_t spaceIndex = m_text.FindLast(' ', index - 2); + std::size_t endlIndex = m_text.FindLast('\n', index - 1); + + if ((spaceIndex > endlIndex || endlIndex == Nz::String::npos) && spaceIndex != Nz::String::npos) + SetCursorPosition(spaceIndex + 1); + else if (endlIndex != Nz::String::npos) + { + if (index == endlIndex + 1) + SetCursorPosition(endlIndex); + else + SetCursorPosition(endlIndex + 1); + } + else + SetCursorPosition({ 0U, m_cursorPositionBegin.y }); + } else MoveCursor(-1); @@ -268,6 +294,29 @@ namespace Ndk if (HasSelection()) SetCursorPosition(m_cursorPositionEnd); + else if (key.control) + { + std::size_t index = GetGlyphIndex(m_cursorPositionEnd); + std::size_t spaceIndex = m_text.Find(' ', index); + std::size_t endlIndex = m_text.Find('\n', index); + + if (spaceIndex < endlIndex && spaceIndex != Nz::String::npos) + { + if (m_text.GetSize() > spaceIndex) + SetCursorPosition(spaceIndex + 1); + else + SetCursorPosition({ static_cast(m_drawer.GetLineGlyphCount(m_cursorPositionEnd.y)), m_cursorPositionEnd.y }); + } + else if (endlIndex != Nz::String::npos) + { + if (index == endlIndex) + SetCursorPosition(endlIndex + 1); + else + SetCursorPosition(endlIndex); + } + else + SetCursorPosition({ static_cast(m_drawer.GetLineGlyphCount(m_cursorPositionEnd.y)), m_cursorPositionEnd.y }); + } else MoveCursor(1); From 39d1d3163969169887e762a32caf0b9cbcfe6ee1 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 3 Aug 2018 20:24:56 +0200 Subject: [PATCH 096/194] Core: Integrated Unicode data --- build/scripts/actions/unicode.lua | 233 +- include/Nazara/Core/Config.hpp | 2 +- include/Nazara/Core/Unicode.hpp | 44 +- src/Nazara/Core/Unicode.cpp | 131 +- src/Nazara/Core/UnicodeData.hpp | 36479 ++++++++++++++++++++++++++++ 5 files changed, 36780 insertions(+), 109 deletions(-) create mode 100644 src/Nazara/Core/UnicodeData.hpp diff --git a/build/scripts/actions/unicode.lua b/build/scripts/actions/unicode.lua index 536fb44ec..471c1808b 100644 --- a/build/scripts/actions/unicode.lua +++ b/build/scripts/actions/unicode.lua @@ -48,15 +48,19 @@ local DirectionToString = {} DirectionToString["EN"] = "Direction_European_Number" DirectionToString["ES"] = "Direction_European_Separator" DirectionToString["ET"] = "Direction_European_Terminator" + DirectionToString["FSI"] = "Direction_First_Strong_Isolate" DirectionToString["L"] = "Direction_Left_To_Right" DirectionToString["LRE"] = "Direction_Left_To_Right_Embedding" + DirectionToString["LRI"] = "Direction_Left_To_Right_Isolate" DirectionToString["LRO"] = "Direction_Left_To_Right_Override" DirectionToString["NSM"] = "Direction_Nonspacing_Mark" DirectionToString["ON"] = "Direction_Other_Neutral" DirectionToString["B"] = "Direction_Paragraph_Separator" - DirectionToString["PDF"] = "Direction_Pop_Directional_Format" + DirectionToString["PDF"] = "Direction_Pop_Directional_Formatting" + DirectionToString["PDI"] = "Direction_Pop_Directional_Isolate" DirectionToString["R"] = "Direction_Right_To_Left" DirectionToString["RLE"] = "Direction_Right_To_Left_Embedding" + DirectionToString["RLI"] = "Direction_Right_To_Left_Isolate" DirectionToString["RLO"] = "Direction_Right_To_Left_Override" DirectionToString["S"] = "Direction_Segment_Separator" DirectionToString["WS"] = "Direction_White_Space" @@ -69,7 +73,7 @@ table.maxn = table.maxn or function (tab) -- Compatibilit end end end - + local function getCharacter(tab, first, index) local character = {} character.Category = CategoryToString[tab[3]] or "Category_NoCategory" @@ -83,112 +87,179 @@ end ACTION.Function = function () local unicodeSet = {} + if (not os.isdir("scripts/data") and not os.mkdir("scripts/data")) then + print("Failed to create scripts/data folder") + end - file = io.open ("scripts/data/UnicodeData.txt", "r") + local filepath = "scripts/data/UnicodeData.txt" + + print("Downloading UnicodeData.txt...") + + local t1 = os.clock() + + local result_str, response_code = http.download("https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt", filepath, { + headers = { "From: Premake", "Referer: Premake" } + }) + + if (response_code ~= 200) then + error("Failed to download UnicodeData.txt") + end + + local fileInfo = os.stat(filepath) + + local t2 = os.clock() + + print(string.format("Download succeeded (%.3f MiB) in %fs (%d KiB/s)", fileInfo.size / (1024 * 1024), t2 - t1, math.floor((fileInfo.size / (t2 - t1)) / 1024))) + + file = io.open (filepath, "r") if (not file) then error("Unable to open Unicode Data file") return end - local t1 = os.clock() + local characters = {} + local characterSets = {} + local lowercaseCharacters = {} + local titlecaseCharacters = {} + local uppercaseCharacters = {} + local currentBlock + local currentBlockStartCodepoint + local lineIndex = 1 + + t1 = os.clock() + print("Parsing UnicodeData.txt...") - local first = 0 - local last = 0 - unicodeSet[0] = {} - unicodeSet[0].First = 0 - unicodeSet[0].Characters = {} - local currentSet = 0 - local inblock = false - local blockData = nil - local unusedIndex = 0 - local c = 0 for line in file:lines() do - local old = 0 - local start = string.find(line, ';', old) - local tab = {} - while (start) do - tab[#tab+1] = string.sub(line, old, start-1, old) - old = start+1 - start = string.find(line, ';', old) - end - tab[#tab+1] = string.sub(line, old) - - local index = tonumber(tab[1], 16) - if (index > 0 and not inblock) then - if (index-last > 1000) then - unicodeSet[currentSet].Last = last - currentSet = currentSet + 1 - unicodeSet[currentSet] = {} - unicodeSet[currentSet].First = index - unicodeSet[currentSet].Characters = {} - print("Set detected (Begin at " .. first .. ", end at " .. last .. ")") - first = index + local parts = line:explode(";") + + local codepoint = tonumber(parts[1], 16) + local characterName = parts[2] + local category = parts[3] + local direction = parts[5] + local uppercaseMapping = tonumber(parts[13], 16) + local lowercaseMapping = tonumber(parts[14], 16) + local titlecaseMapping = tonumber(parts[15], 16) + + local blockName, blockId = string.match(characterName, "<(.+), (%w+)>") + if (currentBlock) then + if (blockId ~= "Last") then + error("Parsing error: expected last block at line " .. lineIndex) + end + + print("Detected set " .. blockName .. " from codepoint " .. currentBlockStartCodepoint .. " to " .. codepoint) + + table.insert(characterSets, { + startCodepoint = currentBlockStartCodepoint, + endCodepoint = codepoint, + name = "<" .. blockName .. ">", + category = category, + direction = direction + }) + + currentBlock = nil + else + if (blockName) then + if (blockId ~= "First") then + error("Parsing error: expected first block at line " .. lineIndex) + end + + currentBlock = blockName + currentBlockStartCodepoint = codepoint else - unusedIndex = unusedIndex + index-last-1 - end - end - - local blockName, blockId = string.match(tab[2], "<(.+), (%w+)>") - if (blockName ~= nil and blockId ~= nil) then - if (blockId == "First") then - if (inblock) then - error("Already in block (" .. tab[1] .. ")") + table.insert(characters, { + codepoint = codepoint, + name = characterName, + category = category, + direction = direction, + upper = uppercaseMapping, + lower = lowercaseMapping, + title = titlecaseMapping + }) + + if (lowercaseMapping) then + table.insert(lowercaseCharacters, {codepoint = codepoint, lower = lowercaseMapping}) end - inblock = true - blockCharacter = getCharacter(tab, first) - elseif (blockId == "Last") then - if (not inblock) then - error("Not in block (" .. tab[1] .. ")") + + if (titlecaseMapping) then + table.insert(titlecaseCharacters, {codepoint = codepoint, title = titlecaseMapping}) end - inblock = false - for i=first, index do - unicodeSet[currentSet].Characters[i] = getCharacter(tab, first, i) + + if (uppercaseMapping) then + table.insert(uppercaseCharacters, {codepoint = codepoint, upper = uppercaseMapping}) end end end - unicodeSet[currentSet].Characters[index - first] = getCharacter(tab, first, index) - if (unicodeSet[currentSet].Characters[index - first].LowerCase ~= (index - first) or - unicodeSet[currentSet].Characters[index - first].UpperCase ~= (index - first) or - unicodeSet[currentSet].Characters[index - first].TitleCase ~= (index - first)) then - c = c + 1 - end - - last = index + lineIndex = lineIndex + 1 end - unicodeSet[currentSet].Last = last - print("Set detected (Begin at " .. first .. ", end at " .. last .. ")") - file:close() - print("Parsed " .. last+1 .. " characters in " .. #unicodeSet .. " sets, " .. unusedIndex .. " unused indices (took " .. os.difftime(os.clock(), t1) .. " sec)") + t2 = os.clock() + + print("Parsed " .. #characters .. " characters in " .. (t2 - t1) .. " seconds") + + print("Writting Unicode Data to header...") file = io.open("../src/Nazara/Core/UnicodeData.hpp", "w+") if (not file) then - error("Unable to create Unicode Data header") + error("Failed to open Unicode Data header") return end - print("Writting Unicode Data to header...") - t1 = os.clock() - for i=0, #unicodeSet do - local maxn = table.maxn(unicodeSet[i].Characters) - file:write(string.format("Character unicodeSet%d[%d] = {\n", i, maxn+1)) - for j=0, maxn do - local v = unicodeSet[i].Characters[j] - if (v) then - file:write(string.format("\t{%s,%s,%d,%d,%d},\n", v.Category, v.Direction, v.LowerCase, v.TitleCase, v.UpperCase)) - else - file:write(string.format("\t{Category_NoCategory,Direction_Boundary_Neutral,%d,%d,%d},\n", j, j, j)) - end + file:write(string.format("UnicodeCharacter unicodeCharacters[%d] = {\n", #characters)) + + for _, data in pairs(characters) do + local category = CategoryToString[data.category] + if (not category) then + error("Unknown category " .. data.category .. " for character " .. data.codepoint) end - - file:write("};\n\n") + + local direction = DirectionToString[data.direction] + if (not direction) then + error("Unknown direction " .. data.direction .. " for character " .. data.codepoint) + end + + file:write(string.format("\t{%d, Unicode::%s, Unicode::%s},\n", data.codepoint, category, direction)) end + file:write("};\n\n") + + file:write(string.format("UnicodeSet unicodeSets[%d] = {\n", #characterSets)) + + for _, data in pairs(characterSets) do + local category = CategoryToString[data.category] + if (not category) then + error("Unknown category " .. data.category .. " for character " .. data.codepoint) + end + + local direction = DirectionToString[data.direction] + if (not direction) then + error("Unknown direction " .. data.direction .. " for character " .. data.codepoint) + end + + file:write(string.format("\t{%d, %d, {%d, Unicode::%s, Unicode::%s}},\n", data.startCodepoint, data.endCodepoint, data.startCodepoint, category, direction)) + end + file:write("};\n\n") + + file:write(string.format("UnicodeCharacterSimpleMapping unicodeLower[%d] = {\n", #lowercaseCharacters)) + for _, data in pairs(lowercaseCharacters) do + file:write(string.format("\t{%d, %d},\n", data.codepoint, data.lower)) + end + file:write("};\n\n") + + file:write(string.format("UnicodeCharacterSimpleMapping unicodeTitle[%d] = {\n", #titlecaseCharacters)) + for _, data in pairs(titlecaseCharacters) do + file:write(string.format("\t{%d, %d},\n", data.codepoint, data.title)) + end + file:write("};\n\n") + + file:write(string.format("UnicodeCharacterSimpleMapping unicodeUpper[%d] = {\n", #uppercaseCharacters)) + for _, data in pairs(uppercaseCharacters) do + file:write(string.format("\t{%d, %d},\n", data.codepoint, data.upper)) + end + file:write("};\n\n") + file:close() - print("Took " .. os.difftime(os.clock(), t1) .. "sec.") + print("Succeeded in " .. (os.clock() - t1) .. "sec.") end ---print(string.match("", "<.+, (%w+)>")) - diff --git a/include/Nazara/Core/Config.hpp b/include/Nazara/Core/Config.hpp index 5aa9fccec..976db4512 100644 --- a/include/Nazara/Core/Config.hpp +++ b/include/Nazara/Core/Config.hpp @@ -50,7 +50,7 @@ #define NAZARA_CORE_FILE_BUFFERSIZE 4096 // Incorporate the Unicode Character Data table (Necessary to make it work with the flag String::HandleUTF8) -#define NAZARA_CORE_INCLUDE_UNICODEDATA 0 +#define NAZARA_CORE_INCLUDE_UNICODEDATA 1 // Use the MemoryManager to manage dynamic allocations (can detect memory leak but allocations/frees are slower) #define NAZARA_CORE_MANAGE_MEMORY 0 diff --git a/include/Nazara/Core/Unicode.hpp b/include/Nazara/Core/Unicode.hpp index 056d61f7d..f1c889ecb 100644 --- a/include/Nazara/Core/Unicode.hpp +++ b/include/Nazara/Core/Unicode.hpp @@ -55,7 +55,7 @@ namespace Nz Category_Other_PrivateUse = Category_Other | 0x0800, // Co Category_Other_Surrogate = Category_Other | 0x1000, // Cs - // Ponctuations + // Punctuations Category_Punctuation = 0x10, // P Category_Punctuation_Close = Category_Punctuation | 0x0100, // Pe Category_Punctuation_Connector = Category_Punctuation | 0x0200, // Pc @@ -81,25 +81,29 @@ namespace Nz enum Direction : UInt8 { - Direction_Arabic_Letter, // AL - Direction_Arabic_Number, // AN - Direction_Boundary_Neutral, // BN - Direction_Common_Separator, // CS - Direction_European_Number, // EN - Direction_European_Separator, // ES - Direction_European_Terminator, // ET - Direction_Left_To_Right, // L - Direction_Left_To_Right_Embedding, // LRE - Direction_Left_To_Right_Override, // LRO - Direction_Nonspacing_Mark, // NSM - Direction_Other_Neutral, // ON - Direction_Paragraph_Separator, // B - Direction_Pop_Directional_Format, // PDF - Direction_Right_To_Left, // R - Direction_Right_To_Left_Embedding, // RLE - Direction_Right_To_Left_Override, // RLO - Direction_Segment_Separator, // S - Direction_White_Space // WS + Direction_Arabic_Letter, // AL + Direction_Arabic_Number, // AN + Direction_Boundary_Neutral, // BN + Direction_Common_Separator, // CS + Direction_European_Number, // EN + Direction_European_Separator, // ES + Direction_European_Terminator, // ET + Direction_First_Strong_Isolate, // FSI + Direction_Left_To_Right, // L + Direction_Left_To_Right_Embedding, // LRE + Direction_Left_To_Right_Isolate, // LRI + Direction_Left_To_Right_Override, // LRO + Direction_Nonspacing_Mark, // NSM + Direction_Other_Neutral, // ON + Direction_Paragraph_Separator, // B + Direction_Pop_Directional_Formatting, // PDF + Direction_Pop_Directional_Isolate, // PDI + Direction_Right_To_Left, // R + Direction_Right_To_Left_Embedding, // RLE + Direction_Right_To_Left_Isolate, // RLI + Direction_Right_To_Left_Override, // RLO + Direction_Segment_Separator, // S + Direction_White_Space // WS }; static Category GetCategory(char32_t character); diff --git a/src/Nazara/Core/Unicode.cpp b/src/Nazara/Core/Unicode.cpp index eac37dead..6b5c10aa7 100644 --- a/src/Nazara/Core/Unicode.cpp +++ b/src/Nazara/Core/Unicode.cpp @@ -4,23 +4,140 @@ #include #include +#include #include #if NAZARA_CORE_INCLUDE_UNICODEDATA namespace Nz { - struct Character + struct UnicodeCharacter { - UInt16 category; // The type of the character - UInt8 direction; // The reading way of the character - UInt32 lowerCase; // The corresponding lower character - UInt32 titleCase; // The corresponding title character - UInt32 upperCase; // The corresponding upper character + UInt32 codepoint; + Unicode::Category category; // The type of the character + Unicode::Direction direction; // The reading way of the character + }; + + struct UnicodeSet + { + UInt32 firstCodepoint; + UInt32 lastCodepoint; + UnicodeCharacter character; + }; + + struct UnicodeCharacterSimpleMapping + { + UInt32 codepoint; + UInt32 character; }; -} #include + namespace + { + const UnicodeCharacter* GetCharacter(Nz::UInt32 codepoint) + { + auto it = std::lower_bound(std::begin(unicodeCharacters), std::end(unicodeCharacters), codepoint, [](const UnicodeCharacter& character, Nz::UInt32 codepoint) { return character.codepoint < codepoint; }); + if (it != std::end(unicodeCharacters) && it->codepoint == codepoint) + return &*it; + else + { + // Character is not part of the common character array, search in set + auto itSet = std::lower_bound(std::begin(unicodeSets), std::end(unicodeSets), codepoint, [](const UnicodeSet& character, Nz::UInt32 codepoint) { return character.firstCodepoint < codepoint; }); + if (itSet != std::begin(unicodeSets)) + { + --itSet; + if (itSet != std::end(unicodeSets) && codepoint >= itSet->firstCodepoint && codepoint <= itSet->lastCodepoint) + return &itSet->character; + } + } + + return nullptr; + } + + template + const UnicodeCharacterSimpleMapping* GetCharacterMapping(Nz::UInt32 codepoint, const UnicodeCharacterSimpleMapping(&mapping)[N]) + { + auto it = std::lower_bound(std::begin(mapping), std::end(mapping), codepoint, [](const UnicodeCharacterSimpleMapping& character, Nz::UInt32 codepoint) { return character.codepoint < codepoint; }); + if (it != std::end(mapping) && it->codepoint == codepoint) + return &*it; + else + return nullptr; + } + } + + /*! + * \brief Gets the category of the character + * \return Unicode category + * + * \param character Character to get assignated category + */ + Unicode::Category Unicode::GetCategory(char32_t character) + { + if (const UnicodeCharacter* characterData = GetCharacter(character)) + return characterData->category; + else + return Category_NoCategory; + } + + /*! + * \brief Gets the direction of reading of the character + * \return Unicode direction + * + * \param character Character to get assignated direction + */ + + Unicode::Direction Unicode::GetDirection(char32_t character) + { + if (const UnicodeCharacter* characterData = GetCharacter(character)) + return characterData->direction; + else + return Direction_Boundary_Neutral; + } + + /*! + * \brief Gets the lower case of the character + * \return Unicode lower + * + * \param character Character to get assignated lower case + */ + + char32_t Unicode::GetLowercase(char32_t character) + { + if (const UnicodeCharacterSimpleMapping* characterMapping = GetCharacterMapping(character, unicodeLower)) + return characterMapping->character; + else + return character; + } + + /*! + * \brief Gets the title case of the character + * \return Unicode title + * + * \param character Character to get assignated title case + */ + char32_t Unicode::GetTitlecase(char32_t character) + { + if (const UnicodeCharacterSimpleMapping* characterMapping = GetCharacterMapping(character, unicodeTitle)) + return characterMapping->character; + else + return character; + } + + /*! + * \brief Gets the upper case of the character + * \return Unicode upper + * + * \param character Character to get assignated upper case + */ + char32_t Unicode::GetUppercase(char32_t character) + { + if (const UnicodeCharacterSimpleMapping* characterMapping = GetCharacterMapping(character, unicodeUpper)) + return characterMapping->character; + else + return character; + } +} + #else // Implementation handling ASCII table namespace Nz diff --git a/src/Nazara/Core/UnicodeData.hpp b/src/Nazara/Core/UnicodeData.hpp new file mode 100644 index 000000000..7e8effc89 --- /dev/null +++ b/src/Nazara/Core/UnicodeData.hpp @@ -0,0 +1,36479 @@ +UnicodeCharacter unicodeCharacters[32262] = { + {0, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {1, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {2, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {3, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {4, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {5, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {6, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {7, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {8, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {9, Unicode::Category_Other_Control, Unicode::Direction_Segment_Separator}, + {10, Unicode::Category_Other_Control, Unicode::Direction_Paragraph_Separator}, + {11, Unicode::Category_Other_Control, Unicode::Direction_Segment_Separator}, + {12, Unicode::Category_Other_Control, Unicode::Direction_White_Space}, + {13, Unicode::Category_Other_Control, Unicode::Direction_Paragraph_Separator}, + {14, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {15, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {16, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {17, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {18, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {19, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {20, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {21, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {22, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {23, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {24, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {25, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {26, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {27, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {28, Unicode::Category_Other_Control, Unicode::Direction_Paragraph_Separator}, + {29, Unicode::Category_Other_Control, Unicode::Direction_Paragraph_Separator}, + {30, Unicode::Category_Other_Control, Unicode::Direction_Paragraph_Separator}, + {31, Unicode::Category_Other_Control, Unicode::Direction_Segment_Separator}, + {32, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {33, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {34, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {35, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {36, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {37, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {38, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {39, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {40, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {41, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {42, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {43, Unicode::Category_Symbol_Math, Unicode::Direction_European_Separator}, + {44, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {45, Unicode::Category_Punctuation_Dash, Unicode::Direction_European_Separator}, + {46, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {47, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {48, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {49, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {50, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {51, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {52, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {53, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {54, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {55, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {56, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {57, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {58, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {59, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {60, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {61, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {62, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {63, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {64, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {67, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {68, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {69, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {70, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {72, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {73, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {74, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {75, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {76, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {77, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {78, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {79, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {80, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {81, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {82, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {83, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {84, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {85, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {86, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {87, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {88, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {89, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {90, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {91, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {92, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {93, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {94, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {95, Unicode::Category_Punctuation_Connector, Unicode::Direction_Other_Neutral}, + {96, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {97, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {98, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {99, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {100, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {101, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {102, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {103, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {104, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {105, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {106, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {107, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {108, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {109, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {110, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {111, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {112, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {113, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {114, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {115, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {116, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {117, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {118, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {121, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {122, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {123, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {124, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {125, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {126, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {127, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {128, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {129, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {130, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {131, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {132, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {133, Unicode::Category_Other_Control, Unicode::Direction_Paragraph_Separator}, + {134, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {135, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {136, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {137, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {138, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {139, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {140, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {141, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {142, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {143, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {144, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {145, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {146, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {147, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {148, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {149, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {150, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {151, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {152, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {153, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {154, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {155, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {156, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {157, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {158, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {159, Unicode::Category_Other_Control, Unicode::Direction_Boundary_Neutral}, + {160, Unicode::Category_Separator_Space, Unicode::Direction_Common_Separator}, + {161, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {162, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {163, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {164, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {165, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {166, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {167, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {168, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {169, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {171, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {172, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {173, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {174, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {175, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {176, Unicode::Category_Symbol_Other, Unicode::Direction_European_Terminator}, + {177, Unicode::Category_Symbol_Math, Unicode::Direction_European_Terminator}, + {178, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {179, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {180, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {181, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {182, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {183, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {184, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {185, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {187, Unicode::Category_Punctuation_FinalQuote, Unicode::Direction_Other_Neutral}, + {188, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {189, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {190, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {191, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {192, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {193, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {194, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {195, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {196, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {197, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {198, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {199, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {200, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {201, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {202, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {203, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {204, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {205, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {206, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {207, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {208, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {209, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {210, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {211, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {212, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {213, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {214, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {215, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {216, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {217, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {218, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {219, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {220, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {221, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {222, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {223, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {224, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {225, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {226, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {227, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {228, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {229, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {230, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {231, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {232, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {233, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {234, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {235, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {236, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {237, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {238, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {239, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {240, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {241, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {242, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {243, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {244, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {245, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {246, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {247, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {248, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {249, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {250, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {251, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {252, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {253, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {254, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {255, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {256, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {257, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {258, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {259, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {260, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {261, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {262, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {263, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {264, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {265, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {266, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {267, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {268, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {269, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {270, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {271, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {272, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {273, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {274, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {275, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {276, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {277, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {278, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {279, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {280, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {281, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {282, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {283, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {284, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {285, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {286, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {287, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {288, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {289, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {290, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {291, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {292, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {293, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {294, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {295, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {296, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {297, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {298, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {299, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {300, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {301, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {302, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {303, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {304, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {305, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {306, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {307, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {308, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {309, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {310, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {311, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {312, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {313, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {314, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {315, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {316, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {317, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {318, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {319, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {320, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {321, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {322, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {323, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {324, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {325, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {326, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {327, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {328, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {329, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {330, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {331, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {332, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {333, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {334, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {335, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {336, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {337, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {338, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {339, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {340, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {341, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {342, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {343, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {344, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {345, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {346, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {347, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {348, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {349, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {350, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {351, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {352, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {353, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {354, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {355, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {356, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {357, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {358, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {359, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {360, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {361, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {362, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {363, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {364, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {365, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {366, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {367, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {368, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {369, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {370, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {371, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {372, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {373, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {374, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {375, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {376, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {377, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {378, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {379, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {380, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {381, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {382, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {383, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {384, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {385, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {386, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {387, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {388, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {389, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {390, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {391, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {392, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {393, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {394, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {395, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {396, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {397, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {398, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {399, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {400, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {401, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {402, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {403, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {404, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {405, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {406, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {407, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {408, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {409, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {410, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {411, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {412, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {413, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {414, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {415, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {416, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {417, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {418, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {419, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {420, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {421, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {422, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {423, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {424, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {425, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {426, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {427, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {428, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {429, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {430, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {431, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {432, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {433, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {434, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {435, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {436, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {437, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {438, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {439, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {440, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {441, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {442, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {444, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {445, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {446, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {447, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {452, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {453, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {454, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {455, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {456, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {457, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {458, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {459, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {460, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {461, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {462, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {463, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {464, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {465, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {466, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {467, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {468, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {469, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {470, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {471, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {472, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {473, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {474, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {475, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {476, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {477, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {478, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {479, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {480, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {481, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {482, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {483, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {484, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {485, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {486, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {487, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {488, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {489, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {490, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {491, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {492, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {493, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {494, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {495, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {496, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {497, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {498, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {499, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {500, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {501, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {502, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {503, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {504, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {505, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {506, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {507, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {508, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {509, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {510, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {511, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {512, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {513, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {514, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {515, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {516, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {517, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {518, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {519, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {520, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {521, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {522, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {523, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {524, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {525, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {526, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {527, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {528, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {529, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {530, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {531, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {532, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {533, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {534, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {535, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {536, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {537, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {538, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {539, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {540, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {541, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {542, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {543, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {544, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {545, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {546, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {547, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {548, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {549, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {550, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {551, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {552, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {553, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {554, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {555, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {556, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {557, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {558, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {559, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {560, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {561, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {562, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {563, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {564, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {565, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {566, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {567, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {568, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {569, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {570, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {571, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {572, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {573, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {574, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {575, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {576, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {577, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {578, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {579, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {580, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {581, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {582, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {583, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {584, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {585, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {586, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {587, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {588, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {589, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {590, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {591, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {592, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {593, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {594, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {595, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {596, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {597, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {598, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {599, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {600, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {601, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {602, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {603, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {604, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {605, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {606, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {607, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {608, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {609, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {610, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {611, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {612, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {613, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {614, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {615, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {616, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {617, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {618, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {619, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {620, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {621, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {622, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {623, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {624, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {625, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {626, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {627, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {628, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {629, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {630, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {631, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {632, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {633, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {634, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {635, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {636, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {637, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {638, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {639, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {640, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {641, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {642, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {643, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {644, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {645, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {646, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {647, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {648, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {649, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {650, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {651, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {652, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {653, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {654, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {655, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {656, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {657, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {658, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {659, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {661, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {662, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {663, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {664, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {665, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {666, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {667, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {668, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {669, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {670, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {671, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {672, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {673, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {674, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {675, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {676, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {677, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {678, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {679, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {680, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {681, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {682, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {683, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {684, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {685, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {686, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {687, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {688, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {689, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {690, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {691, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {692, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {693, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {694, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {695, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {696, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {697, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {698, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {699, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {700, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {701, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {702, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {703, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {704, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {705, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {706, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {707, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {708, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {709, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {710, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {711, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {712, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {713, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {714, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {715, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {716, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {717, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {718, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {719, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {720, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {721, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {722, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {723, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {724, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {725, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {726, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {727, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {728, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {729, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {730, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {731, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {732, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {733, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {734, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {735, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {736, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {737, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {738, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {739, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {740, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {741, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {742, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {743, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {744, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {745, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {746, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {747, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {748, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {749, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {750, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {751, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {752, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {753, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {754, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {755, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {756, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {757, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {758, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {759, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {760, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {761, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {762, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {763, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {764, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {765, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {766, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {767, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {768, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {769, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {770, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {771, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {772, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {773, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {774, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {775, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {776, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {777, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {778, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {779, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {780, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {781, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {782, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {783, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {784, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {785, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {786, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {787, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {788, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {789, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {790, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {791, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {792, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {793, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {794, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {795, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {796, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {797, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {798, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {799, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {800, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {801, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {802, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {803, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {804, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {805, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {806, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {807, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {808, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {809, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {810, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {811, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {812, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {813, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {814, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {815, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {816, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {817, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {818, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {819, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {820, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {821, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {822, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {823, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {824, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {825, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {826, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {827, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {828, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {829, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {830, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {831, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {832, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {833, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {834, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {835, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {836, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {837, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {838, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {839, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {840, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {841, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {842, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {843, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {844, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {845, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {846, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {847, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {848, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {849, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {850, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {851, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {852, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {853, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {854, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {855, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {856, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {857, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {858, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {859, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {860, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {861, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {862, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {863, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {864, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {865, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {866, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {867, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {868, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {869, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {870, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {871, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {872, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {873, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {874, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {875, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {876, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {877, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {878, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {879, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {880, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {881, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {882, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {883, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {884, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {885, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {886, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {887, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {890, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {891, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {892, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {893, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {894, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {895, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {900, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {901, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {902, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {903, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {904, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {905, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {906, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {908, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {910, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {911, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {912, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {913, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {914, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {915, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {916, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {917, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {918, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {919, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {920, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {921, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {922, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {923, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {924, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {925, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {926, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {927, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {928, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {929, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {931, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {932, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {933, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {934, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {935, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {936, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {937, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {938, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {939, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {940, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {941, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {942, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {943, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {944, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {945, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {946, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {947, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {948, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {949, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {950, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {951, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {952, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {953, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {954, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {955, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {956, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {957, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {958, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {959, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {960, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {961, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {962, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {963, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {964, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {965, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {966, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {967, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {968, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {969, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {970, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {971, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {972, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {973, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {974, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {975, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {976, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {977, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {978, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {979, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {980, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {981, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {982, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {983, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {984, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {985, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {986, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {987, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {988, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {989, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {990, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {991, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {992, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {993, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {994, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {995, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {996, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {997, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {998, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {999, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1000, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1001, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1002, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1003, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1004, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1005, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1006, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1007, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1008, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1009, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1010, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1011, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1012, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1013, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1014, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {1015, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1016, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1017, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1018, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1019, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1020, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1021, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1022, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1023, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1024, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1025, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1026, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1027, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1028, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1029, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1030, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1031, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1032, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1033, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1034, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1035, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1036, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1037, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1038, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1039, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1040, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1041, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1042, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1043, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1044, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1045, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1046, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1047, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1048, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1049, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1050, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1051, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1052, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1053, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1054, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1055, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1056, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1057, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1058, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1059, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1060, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1061, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1062, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1063, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1064, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1065, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1066, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1067, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1068, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1069, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1070, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1071, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1072, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1073, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1074, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1075, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1076, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1077, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1078, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1079, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1080, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1081, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1082, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1083, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1084, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1085, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1086, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1087, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1088, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1089, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1090, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1091, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1092, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1093, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1094, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1095, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1096, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1097, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1098, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1099, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1100, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1101, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1102, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1103, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1104, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1105, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1106, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1107, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1108, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1109, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1110, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1111, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1112, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1113, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1114, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1115, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1116, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1117, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1118, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1119, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1120, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1121, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1122, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1123, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1124, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1125, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1126, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1127, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1128, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1129, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1130, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1131, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1132, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1133, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1134, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1135, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1136, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1137, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1138, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1139, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1140, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1141, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1142, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1143, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1144, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1145, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1146, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1147, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1148, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1149, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1150, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1151, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1152, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1153, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1154, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {1155, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1156, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1157, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1158, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1159, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1160, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {1161, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {1162, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1163, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1164, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1165, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1166, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1167, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1168, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1169, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1170, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1171, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1172, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1173, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1174, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1175, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1176, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1177, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1178, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1179, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1180, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1181, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1182, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1183, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1184, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1185, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1186, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1187, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1188, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1189, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1190, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1191, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1192, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1193, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1194, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1195, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1196, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1197, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1198, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1199, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1200, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1201, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1202, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1203, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1204, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1205, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1206, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1207, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1208, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1209, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1210, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1211, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1212, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1213, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1214, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1215, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1216, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1217, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1218, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1219, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1220, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1221, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1222, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1223, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1224, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1225, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1226, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1227, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1228, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1229, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1230, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1231, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1232, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1233, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1234, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1235, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1236, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1237, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1238, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1239, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1240, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1241, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1242, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1243, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1244, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1245, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1246, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1247, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1248, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1249, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1250, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1251, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1252, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1253, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1254, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1255, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1256, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1257, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1258, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1259, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1260, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1261, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1262, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1263, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1264, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1265, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1266, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1267, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1268, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1269, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1270, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1271, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1272, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1273, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1274, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1275, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1276, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1277, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1278, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1279, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1280, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1281, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1282, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1283, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1284, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1285, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1286, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1287, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1288, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1289, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1290, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1291, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1292, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1293, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1294, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1295, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1296, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1297, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1298, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1299, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1300, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1301, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1302, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1303, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1304, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1305, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1306, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1307, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1308, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1309, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1310, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1311, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1312, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1313, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1314, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1315, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1316, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1317, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1318, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1319, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1320, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1321, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1322, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1323, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1324, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1325, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1326, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1327, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1329, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1330, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1331, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1332, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1333, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1334, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1335, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1336, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1337, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1338, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1339, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1340, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1341, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1342, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1343, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1344, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1345, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1346, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1347, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1348, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1349, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1350, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1351, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1352, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1353, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1354, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1355, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1356, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1357, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1358, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1359, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1360, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1361, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1362, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1363, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1364, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1365, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1366, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {1369, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {1370, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {1371, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {1372, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {1373, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {1374, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {1375, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {1376, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1377, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1378, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1379, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1380, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1381, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1382, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1383, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1384, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1385, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1386, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1387, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1388, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1389, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1390, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1391, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1392, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1393, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1394, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1395, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1396, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1397, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1398, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1399, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1400, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1401, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1402, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1403, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1404, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1405, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1406, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1407, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1408, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1409, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1410, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1411, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1412, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1413, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1414, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1415, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1416, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {1417, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {1418, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {1421, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {1422, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {1423, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {1425, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1426, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1427, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1428, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1429, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1430, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1431, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1432, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1433, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1434, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1435, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1436, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1437, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1438, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1439, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1440, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1441, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1442, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1443, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1444, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1445, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1446, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1447, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1448, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1449, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1450, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1451, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1452, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1453, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1454, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1455, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1456, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1457, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1458, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1459, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1460, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1461, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1462, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1463, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1464, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1465, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1466, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1467, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1468, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1469, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1470, Unicode::Category_Punctuation_Dash, Unicode::Direction_Right_To_Left}, + {1471, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1472, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {1473, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1474, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1475, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {1476, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1477, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1478, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {1479, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1488, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1489, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1490, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1491, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1492, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1493, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1494, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1495, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1496, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1497, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1498, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1499, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1500, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1501, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1502, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1503, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1504, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1505, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1506, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1507, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1508, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1509, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1510, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1511, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1512, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1513, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1514, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1519, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1520, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1521, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1522, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1523, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {1524, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {1536, Unicode::Category_Other_Format, Unicode::Direction_Arabic_Number}, + {1537, Unicode::Category_Other_Format, Unicode::Direction_Arabic_Number}, + {1538, Unicode::Category_Other_Format, Unicode::Direction_Arabic_Number}, + {1539, Unicode::Category_Other_Format, Unicode::Direction_Arabic_Number}, + {1540, Unicode::Category_Other_Format, Unicode::Direction_Arabic_Number}, + {1541, Unicode::Category_Other_Format, Unicode::Direction_Arabic_Number}, + {1542, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {1543, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {1544, Unicode::Category_Symbol_Math, Unicode::Direction_Arabic_Letter}, + {1545, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {1546, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {1547, Unicode::Category_Symbol_Currency, Unicode::Direction_Arabic_Letter}, + {1548, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {1549, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1550, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {1551, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {1552, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1553, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1554, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1555, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1556, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1557, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1558, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1559, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1560, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1561, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1562, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1563, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1564, Unicode::Category_Other_Format, Unicode::Direction_Arabic_Letter}, + {1566, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1567, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1568, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1569, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1570, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1571, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1572, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1573, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1574, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1575, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1576, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1577, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1578, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1579, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1580, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1581, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1582, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1583, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1584, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1585, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1586, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1587, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1588, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1589, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1590, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1591, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1592, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1593, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1594, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1595, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1596, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1597, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1598, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1599, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1600, Unicode::Category_Letter_Modifier, Unicode::Direction_Arabic_Letter}, + {1601, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1602, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1603, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1604, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1605, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1606, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1607, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1608, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1609, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1610, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1611, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1612, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1613, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1614, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1615, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1616, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1617, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1618, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1619, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1620, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1621, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1622, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1623, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1624, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1625, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1626, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1627, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1628, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1629, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1630, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1631, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1632, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {1633, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {1634, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {1635, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {1636, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {1637, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {1638, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {1639, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {1640, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {1641, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {1642, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {1643, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Number}, + {1644, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Number}, + {1645, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1646, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1647, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1648, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1649, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1650, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1651, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1652, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1653, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1654, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1655, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1656, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1657, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1658, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1659, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1660, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1661, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1662, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1663, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1664, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1665, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1666, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1667, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1668, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1669, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1670, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1671, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1672, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1673, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1674, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1675, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1676, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1677, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1678, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1679, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1680, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1681, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1682, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1683, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1684, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1685, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1686, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1687, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1688, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1689, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1690, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1691, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1692, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1693, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1694, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1695, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1696, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1697, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1698, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1699, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1700, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1701, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1702, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1703, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1704, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1705, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1706, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1707, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1708, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1709, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1710, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1711, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1712, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1713, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1714, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1715, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1716, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1717, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1718, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1719, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1720, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1721, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1722, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1723, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1724, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1725, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1726, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1727, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1728, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1729, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1730, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1731, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1732, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1733, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1734, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1735, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1736, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1737, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1738, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1739, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1740, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1741, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1742, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1743, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1744, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1745, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1746, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1747, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1748, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1749, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1750, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1751, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1752, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1753, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1754, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1755, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1756, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1757, Unicode::Category_Other_Format, Unicode::Direction_Arabic_Number}, + {1758, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {1759, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1760, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1761, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1762, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1763, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1764, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1765, Unicode::Category_Letter_Modifier, Unicode::Direction_Arabic_Letter}, + {1766, Unicode::Category_Letter_Modifier, Unicode::Direction_Arabic_Letter}, + {1767, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1768, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1769, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {1770, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1771, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1772, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1773, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1774, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1775, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1776, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {1777, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {1778, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {1779, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {1780, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {1781, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {1782, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {1783, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {1784, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {1785, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {1786, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1787, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1788, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1789, Unicode::Category_Symbol_Other, Unicode::Direction_Arabic_Letter}, + {1790, Unicode::Category_Symbol_Other, Unicode::Direction_Arabic_Letter}, + {1791, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1792, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1793, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1794, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1795, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1796, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1797, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1798, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1799, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1800, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1801, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1802, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1803, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1804, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1805, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {1807, Unicode::Category_Other_Format, Unicode::Direction_Arabic_Letter}, + {1808, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1809, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1810, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1811, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1812, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1813, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1814, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1815, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1816, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1817, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1818, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1819, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1820, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1821, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1822, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1823, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1824, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1825, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1826, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1827, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1828, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1829, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1830, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1831, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1832, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1833, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1834, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1835, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1836, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1837, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1838, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1839, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1840, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1841, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1842, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1843, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1844, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1845, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1846, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1847, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1848, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1849, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1850, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1851, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1852, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1853, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1854, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1855, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1856, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1857, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1858, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1859, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1860, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1861, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1862, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1863, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1864, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1865, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1866, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1869, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1870, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1871, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1872, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1873, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1874, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1875, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1876, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1877, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1878, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1879, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1880, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1881, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1882, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1883, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1884, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1885, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1886, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1887, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1888, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1889, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1890, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1891, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1892, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1893, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1894, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1895, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1896, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1897, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1898, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1899, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1900, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1901, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1902, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1903, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1904, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1905, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1906, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1907, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1908, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1909, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1910, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1911, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1912, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1913, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1914, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1915, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1916, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1917, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1918, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1919, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1920, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1921, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1922, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1923, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1924, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1925, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1926, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1927, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1928, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1929, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1930, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1931, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1932, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1933, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1934, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1935, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1936, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1937, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1938, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1939, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1940, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1941, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1942, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1943, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1944, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1945, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1946, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1947, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1948, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1949, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1950, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1951, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1952, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1953, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1954, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1955, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1956, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1957, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1958, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1959, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1960, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1961, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1962, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1963, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1964, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1965, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1966, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1967, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1968, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {1969, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {1984, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {1985, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {1986, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {1987, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {1988, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {1989, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {1990, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {1991, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {1992, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {1993, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {1994, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1995, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1996, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1997, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1998, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {1999, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2000, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2001, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2002, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2003, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2004, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2005, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2006, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2007, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2008, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2009, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2010, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2011, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2012, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2013, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2014, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2015, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2016, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2017, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2018, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2019, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2020, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2021, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2022, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2023, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2024, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2025, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2026, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2027, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2028, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2029, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2030, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2031, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2032, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2033, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2034, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2035, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2036, Unicode::Category_Letter_Modifier, Unicode::Direction_Right_To_Left}, + {2037, Unicode::Category_Letter_Modifier, Unicode::Direction_Right_To_Left}, + {2038, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {2039, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {2040, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {2041, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {2042, Unicode::Category_Letter_Modifier, Unicode::Direction_Right_To_Left}, + {2045, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2046, Unicode::Category_Symbol_Currency, Unicode::Direction_Right_To_Left}, + {2047, Unicode::Category_Symbol_Currency, Unicode::Direction_Right_To_Left}, + {2048, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2049, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2050, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2051, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2052, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2053, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2054, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2055, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2056, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2057, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2058, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2059, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2060, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2061, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2062, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2063, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2064, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2065, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2066, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2067, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2068, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2069, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2070, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2071, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2072, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2073, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2074, Unicode::Category_Letter_Modifier, Unicode::Direction_Right_To_Left}, + {2075, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2076, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2077, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2078, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2079, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2080, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2081, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2082, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2083, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2084, Unicode::Category_Letter_Modifier, Unicode::Direction_Right_To_Left}, + {2085, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2086, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2087, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2088, Unicode::Category_Letter_Modifier, Unicode::Direction_Right_To_Left}, + {2089, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2090, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2091, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2092, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2093, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2096, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2097, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2098, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2099, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2100, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2101, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2102, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2103, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2104, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2105, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2106, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2107, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2108, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2109, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2110, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2112, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2113, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2114, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2115, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2116, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2117, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2118, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2119, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2120, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2121, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2122, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2123, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2124, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2125, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2126, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2127, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2128, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2129, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2130, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2131, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2132, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2133, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2134, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2135, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2136, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {2137, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2138, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2139, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2142, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {2144, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2145, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2146, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2147, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2148, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2149, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2150, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2151, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2152, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2153, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2154, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2208, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2209, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2210, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2211, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2212, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2213, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2214, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2215, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2216, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2217, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2218, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2219, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2220, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2221, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2222, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2223, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2224, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2225, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2226, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2227, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2228, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2230, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2231, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2232, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2233, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2234, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2235, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2236, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2237, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {2259, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2260, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2261, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2262, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2263, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2264, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2265, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2266, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2267, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2268, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2269, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2270, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2271, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2272, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2273, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2274, Unicode::Category_Other_Format, Unicode::Direction_Arabic_Number}, + {2275, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2276, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2277, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2278, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2279, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2280, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2281, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2282, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2283, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2284, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2285, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2286, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2287, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2288, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2289, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2290, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2291, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2292, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2293, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2294, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2295, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2296, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2297, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2298, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2299, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2300, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2301, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2302, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2303, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2304, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2305, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2306, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2307, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2362, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2363, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2364, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2366, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2367, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2368, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2369, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2370, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2371, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2372, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2373, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2374, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2375, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2376, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2377, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2378, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2379, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2380, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2381, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2382, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2383, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2385, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2386, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2387, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2388, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2389, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2390, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2391, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2402, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2403, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2404, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {2405, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {2406, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2407, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2408, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2409, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2410, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2411, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2412, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2413, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2414, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2415, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2416, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {2417, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {2418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2433, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2434, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2435, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2492, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2494, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2495, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2496, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2497, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2498, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2499, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2500, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2503, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2504, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2507, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2508, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2509, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2519, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2530, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2531, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2534, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2535, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2536, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2537, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2538, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2539, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2540, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2541, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2542, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2543, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2546, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {2547, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {2548, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2549, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2550, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2551, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2552, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2553, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2554, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {2555, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {2556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2557, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {2558, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2561, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2562, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2563, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2620, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2622, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2623, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2624, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2625, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2626, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2631, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2632, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2635, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2636, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2637, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2641, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2662, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2663, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2664, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2665, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2666, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2667, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2668, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2669, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2670, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2671, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2672, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2673, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2677, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2678, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {2689, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2690, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2691, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2748, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2750, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2751, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2752, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2753, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2754, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2755, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2756, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2757, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2759, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2760, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2761, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2763, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2764, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2765, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2786, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2787, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2790, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2791, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2792, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2793, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2794, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2795, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2796, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2797, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2798, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2799, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2800, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {2801, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {2809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2810, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2811, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2812, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2813, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2814, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2815, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2817, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2818, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2819, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2876, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2878, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2879, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2880, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2881, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2882, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2883, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2884, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2887, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2888, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2891, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2892, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2893, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2902, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2903, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {2908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2914, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2915, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2918, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2919, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2920, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2921, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2922, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2923, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2924, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2925, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2926, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2927, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {2928, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {2929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2930, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2931, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2932, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2933, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2934, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2935, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {2946, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {2947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {2999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3006, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3007, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3008, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3009, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3010, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3014, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3015, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3016, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3018, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3019, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3020, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3021, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3031, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3046, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3047, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3048, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3049, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3050, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3051, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3052, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3053, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3054, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3055, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3056, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3057, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3058, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3059, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {3060, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {3061, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {3062, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {3063, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {3064, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {3065, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {3066, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {3072, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3073, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3074, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3075, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3076, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3134, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3135, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3136, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3137, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3138, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3139, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3140, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3142, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3143, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3144, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3146, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3147, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3148, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3149, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3157, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3158, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3170, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3171, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3174, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3175, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3176, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3177, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3178, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3179, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3180, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3181, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3182, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3183, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3192, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {3193, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {3194, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {3195, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {3196, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {3197, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {3198, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {3199, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3201, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3202, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3203, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3204, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3260, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3262, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3263, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Left_To_Right}, + {3264, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3265, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3266, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3267, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3268, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3270, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Left_To_Right}, + {3271, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3272, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3274, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3275, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3276, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3277, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3285, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3286, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3298, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3299, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3302, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3303, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3304, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3305, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3306, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3307, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3308, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3309, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3310, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3311, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3328, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3329, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3330, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3331, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3387, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3388, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3390, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3391, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3392, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3393, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3394, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3395, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3396, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3398, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3399, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3400, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3402, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3403, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3404, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3405, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3407, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3415, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3416, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3417, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3418, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3419, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3420, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3421, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3422, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3426, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3427, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3430, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3431, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3432, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3433, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3434, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3435, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3436, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3437, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3438, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3439, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3440, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3441, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3442, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3443, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3444, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3445, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3446, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3447, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3448, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3449, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3458, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3459, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3530, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3535, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3536, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3537, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3538, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3539, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3540, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3542, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3544, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3545, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3546, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3547, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3548, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3549, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3550, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3551, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3558, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3559, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3560, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3561, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3562, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3563, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3564, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3565, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3566, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3567, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3570, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3571, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3572, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3633, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3636, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3637, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3638, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3639, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3640, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3641, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3642, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3647, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {3648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3654, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {3655, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3656, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3657, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3658, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3659, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3660, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3661, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3662, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3663, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3664, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3665, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3666, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3667, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3668, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3669, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3670, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3671, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3672, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3673, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3674, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3675, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3761, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3764, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3765, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3766, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3767, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3768, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3769, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3771, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3772, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3782, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {3784, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3785, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3786, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3787, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3788, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3789, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3792, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3793, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3794, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3795, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3796, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3797, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3798, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3799, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3800, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3801, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3841, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3842, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3843, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3844, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3845, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3846, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3847, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3848, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3849, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3850, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3851, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3852, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3853, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3854, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3855, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3856, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3857, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3858, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3859, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3860, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3861, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3862, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3863, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3864, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3865, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3866, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3867, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3868, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3869, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3870, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3871, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3872, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3873, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3874, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3875, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3876, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3877, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3878, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3879, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3880, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3881, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {3882, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3883, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3884, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3885, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3886, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3887, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3888, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3889, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3890, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3891, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {3892, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3893, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3894, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3895, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3896, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {3897, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3898, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {3899, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {3900, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {3901, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {3902, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3903, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3916, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3953, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3954, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3955, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3956, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3957, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3958, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3959, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3960, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3961, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3962, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3963, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3964, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3965, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3966, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3967, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {3968, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3969, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3970, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3971, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3972, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3973, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {3974, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3975, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {3981, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3982, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3983, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3984, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3985, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3986, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3987, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3988, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3989, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3990, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3991, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3993, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3994, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3995, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3996, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3997, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3998, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {3999, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4000, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4001, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4002, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4003, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4004, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4005, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4006, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4007, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4008, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4009, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4010, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4011, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4012, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4013, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4014, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4015, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4016, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4017, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4018, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4019, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4020, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4021, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4022, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4023, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4024, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4025, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4026, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4027, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4028, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4030, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4031, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4032, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4033, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4034, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4035, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4036, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4037, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4038, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4039, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4040, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4041, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4042, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4043, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4044, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4046, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4047, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4048, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4049, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4050, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4051, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4052, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4053, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4054, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4055, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4056, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4057, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4058, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4132, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4134, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4135, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4136, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4137, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4139, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4140, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4141, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4142, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4143, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4144, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4145, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4146, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4147, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4148, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4149, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4150, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4151, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4152, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4153, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4154, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4155, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4156, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4157, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4158, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4160, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4161, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4162, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4163, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4164, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4165, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4166, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4167, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4168, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4169, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4170, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4171, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4172, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4173, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4174, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4175, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4182, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4183, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4184, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4185, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4190, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4191, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4192, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4194, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4195, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4196, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4199, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4200, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4201, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4202, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4203, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4204, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4205, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4209, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4210, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4211, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4212, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4226, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4227, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4228, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4229, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4230, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4231, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4232, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4233, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4234, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4235, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4236, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4237, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4239, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4240, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4241, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4242, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4243, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4244, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4245, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4246, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4247, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4248, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4249, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {4250, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4251, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4252, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {4253, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4254, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4255, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {4256, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4257, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4258, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4259, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4260, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4261, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4262, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4263, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4264, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4265, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4266, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4267, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4268, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4269, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4270, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4271, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4272, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4273, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4274, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4275, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4276, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4277, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4278, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4279, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4280, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4281, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4282, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4283, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4284, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4285, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4286, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4287, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4288, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4289, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4290, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4291, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4292, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4293, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4295, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4301, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {4304, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4305, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4306, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4307, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4308, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4309, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4310, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4311, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4312, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4313, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4314, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4315, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4316, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4317, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4318, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4319, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4320, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4321, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4322, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4323, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4324, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4325, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4326, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4327, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4328, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4329, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4330, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4331, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4332, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4333, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4334, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4335, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4336, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4337, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4338, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4339, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4340, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4341, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4342, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4343, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4344, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4345, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4346, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4347, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4348, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {4349, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4350, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4351, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {4352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4519, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4530, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4531, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4532, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4533, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4534, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4535, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4540, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4541, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4542, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4546, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4547, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4548, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4868, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4879, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4916, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4957, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4958, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4959, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {4960, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4961, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4962, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4963, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4964, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4965, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4966, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4967, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4968, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {4969, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4970, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4971, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4972, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4973, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4974, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4975, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4976, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4977, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4978, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4979, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4980, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4981, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4982, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4983, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4984, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4985, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4986, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4987, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4988, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {4992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {4999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5008, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {5009, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {5010, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {5011, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {5012, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {5013, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {5014, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {5015, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {5016, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {5017, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {5024, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5025, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5026, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5027, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5028, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5029, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5030, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5031, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5032, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5033, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5034, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5035, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5036, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5037, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5038, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5039, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5040, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5041, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5042, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5043, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5044, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5045, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5046, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5047, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5048, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5049, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5050, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5051, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5052, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5053, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5054, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5055, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5056, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5057, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5058, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5059, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5060, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5061, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5062, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5063, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5064, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5065, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5066, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5067, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5068, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5069, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5070, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5071, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5072, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5073, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5074, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5075, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5076, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5077, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5078, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5079, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5080, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5081, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5082, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5083, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5084, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5085, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5086, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5087, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5088, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5089, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5090, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5091, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5092, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5093, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5094, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5095, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5096, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5097, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5098, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5099, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5100, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5101, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5102, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5103, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5104, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5105, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5106, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5107, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5108, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5109, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {5112, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {5113, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {5114, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {5115, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {5116, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {5117, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {5120, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {5121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5132, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5134, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5135, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5136, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5137, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5139, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5140, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5141, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5142, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5143, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5144, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5145, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5146, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5147, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5148, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5149, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5150, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5151, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5152, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5153, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5154, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5155, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5156, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5157, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5158, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5519, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5530, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5531, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5532, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5533, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5534, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5535, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5540, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5541, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5542, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5546, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5547, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5548, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5741, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {5742, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {5743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5760, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {5761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5787, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {5788, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {5792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5801, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5867, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {5868, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {5869, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {5870, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {5871, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {5872, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {5873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5879, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5906, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {5907, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {5908, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {5920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5938, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {5939, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {5940, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {5941, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {5942, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {5952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5970, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {5971, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {5984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {5999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6002, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6003, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6068, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6069, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6070, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6071, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6072, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6073, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6074, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6075, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6076, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6077, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6078, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6079, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6080, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6081, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6082, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6083, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6084, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6085, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6086, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6087, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6088, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6089, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6090, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6091, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6092, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6093, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6094, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6095, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6096, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6097, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6098, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6099, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6100, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6101, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6102, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6103, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {6104, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6105, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6106, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6107, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {6108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6109, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6112, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6113, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6114, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6115, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6116, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6117, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6118, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6119, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6120, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6121, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6128, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {6129, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {6130, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {6131, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {6132, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {6133, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {6134, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {6135, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {6136, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {6137, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {6144, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6145, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6146, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6147, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6148, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6149, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6150, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {6151, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6152, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6153, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6154, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6155, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6156, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6157, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6158, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {6160, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6161, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6162, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6163, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6164, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6165, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6166, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6167, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6168, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6169, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6211, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {6212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6277, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6278, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6313, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6432, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6433, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6434, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6435, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6436, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6437, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6438, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6439, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6440, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6441, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6442, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6443, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6448, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6449, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6450, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6451, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6452, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6453, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6454, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6455, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6456, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6457, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6458, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6459, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6464, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6468, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6469, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {6470, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6471, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6472, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6473, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6474, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6475, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6476, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6477, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6478, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6479, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6530, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6531, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6532, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6533, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6534, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6535, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6540, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6541, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6542, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6546, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6547, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6548, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6608, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6609, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6610, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6611, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6612, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6613, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6614, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6615, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6616, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6617, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6618, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {6622, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6623, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6624, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6625, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6626, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6627, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6628, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6629, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6630, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6631, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6632, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6633, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6634, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6635, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6636, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6637, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6638, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6639, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6640, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6641, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6642, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6643, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6644, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6645, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6646, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6647, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6648, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6649, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6650, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6651, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6652, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6653, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6654, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6655, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {6656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6679, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6680, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6681, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6682, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6683, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6686, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6687, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6741, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6742, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6743, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6744, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6745, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6746, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6747, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6748, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6749, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6750, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6752, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6753, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6754, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6755, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6756, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6757, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6758, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6759, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6760, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6761, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6762, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6763, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6764, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6765, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6766, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6767, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6768, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6769, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6770, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6771, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6772, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6773, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6774, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6775, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6776, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6777, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6778, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6779, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6780, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6783, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6784, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6785, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6786, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6787, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6788, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6789, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6790, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6791, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6792, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6793, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6800, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6801, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6802, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6803, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6804, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6805, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6806, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6807, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6808, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6809, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6816, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6817, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6818, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6819, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6820, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6821, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6822, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6823, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {6824, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6825, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6826, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6827, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6828, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6829, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {6832, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6833, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6834, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6835, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6836, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6837, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6838, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6839, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6840, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6841, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6842, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6843, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6844, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6845, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6846, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {6912, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6913, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6914, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6915, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6916, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6964, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6965, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6966, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6967, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6968, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6969, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6970, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6971, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6972, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6973, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6974, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6975, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6976, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6977, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6978, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {6979, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6980, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {6981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {6992, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6993, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6994, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6995, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6996, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6997, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6998, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {6999, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7000, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7001, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7002, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7003, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7004, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7005, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7006, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7007, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7008, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7009, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7010, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7011, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7012, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7013, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7014, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7015, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7016, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7017, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7018, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7019, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7020, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7021, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7022, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7023, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7024, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7025, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7026, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7027, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7028, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7029, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7030, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7031, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7032, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7033, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7034, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7035, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7036, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {7040, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7041, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7042, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7073, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7074, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7075, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7076, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7077, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7078, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7079, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7080, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7081, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7082, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7083, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7084, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7085, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7088, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7089, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7090, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7091, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7092, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7093, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7094, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7095, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7096, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7097, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7132, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7134, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7135, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7136, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7137, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7139, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7140, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7141, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7142, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7143, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7144, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7145, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7146, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7147, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7148, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7149, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7150, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7151, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7152, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7153, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7154, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7155, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7164, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7165, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7166, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7167, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7204, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7205, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7206, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7207, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7208, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7209, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7210, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7211, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7212, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7213, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7214, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7215, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7216, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7217, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7218, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7219, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7220, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7221, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7222, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7223, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7227, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7228, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7229, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7230, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7231, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7232, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7233, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7234, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7235, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7236, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7237, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7238, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7239, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7240, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7241, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7248, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7249, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7250, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7251, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7252, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7253, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7254, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7255, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7256, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7257, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {7258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7288, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7289, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7290, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7291, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7292, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7293, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7294, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7295, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7296, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7297, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7298, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7299, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7300, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7301, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7302, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7303, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7304, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7312, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7313, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7314, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7315, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7316, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7317, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7318, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7319, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7320, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7321, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7322, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7323, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7324, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7325, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7326, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7327, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7328, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7329, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7330, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7331, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7332, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7333, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7334, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7335, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7336, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7337, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7338, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7339, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7340, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7341, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7342, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7343, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7344, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7345, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7346, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7347, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7348, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7349, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7350, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7351, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7352, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7353, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7354, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7357, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7358, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7359, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7360, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7361, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7362, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7363, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7364, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7365, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7366, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7367, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7376, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7377, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7378, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7379, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {7380, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7381, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7382, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7383, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7384, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7385, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7386, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7387, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7388, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7389, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7390, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7391, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7392, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7393, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7394, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7395, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7396, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7397, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7398, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7399, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7400, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7405, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7410, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7411, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7412, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {7415, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {7416, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7417, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7424, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7425, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7426, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7427, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7428, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7429, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7430, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7431, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7432, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7433, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7434, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7435, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7436, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7437, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7438, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7439, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7440, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7441, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7442, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7443, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7444, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7445, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7446, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7447, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7448, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7449, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7450, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7451, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7452, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7453, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7454, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7455, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7456, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7457, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7458, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7459, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7460, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7461, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7462, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7463, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7464, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7465, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7466, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7467, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7468, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7469, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7470, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7471, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7472, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7473, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7474, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7475, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7476, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7477, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7478, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7479, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7480, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7481, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7482, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7483, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7484, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7485, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7486, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7487, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7488, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7489, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7490, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7491, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7492, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7493, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7494, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7495, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7496, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7497, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7498, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7499, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7500, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7501, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7502, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7503, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7504, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7505, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7506, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7507, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7508, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7509, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7510, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7511, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7512, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7513, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7514, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7515, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7516, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7517, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7518, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7519, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7520, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7521, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7522, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7523, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7524, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7525, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7526, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7527, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7528, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7529, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7530, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7531, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7532, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7533, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7534, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7535, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7536, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7537, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7538, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7539, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7540, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7541, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7542, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7543, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7544, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7545, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7546, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7547, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7548, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7549, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7550, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7551, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7552, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7553, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7554, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7555, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7556, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7557, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7558, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7559, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7560, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7561, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7562, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7563, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7564, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7565, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7566, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7567, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7568, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7569, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7570, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7571, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7572, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7573, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7574, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7575, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7576, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7577, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7578, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7579, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7580, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7581, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7582, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7583, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7584, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7585, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7586, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7587, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7588, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7589, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7590, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7591, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7592, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7593, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7594, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7595, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7596, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7597, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7598, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7599, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7600, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7601, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7602, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7603, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7604, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7605, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7606, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7607, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7608, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7609, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7610, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7611, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7612, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7613, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7614, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7615, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {7616, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7617, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7618, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7619, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7620, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7621, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7622, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7623, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7624, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7625, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7626, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7627, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7628, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7629, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7630, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7631, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7632, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7633, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7634, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7635, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7636, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7637, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7638, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7639, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7640, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7641, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7642, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7643, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7644, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7645, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7646, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7647, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7648, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7649, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7650, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7651, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7652, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7653, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7654, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7655, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7656, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7657, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7658, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7659, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7660, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7661, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7662, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7663, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7664, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7665, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7666, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7667, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7668, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7669, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7670, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7671, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7672, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7673, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7675, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7676, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7677, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7678, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7679, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {7680, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7681, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7682, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7683, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7684, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7685, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7686, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7687, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7688, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7689, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7690, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7691, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7692, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7693, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7694, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7695, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7696, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7697, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7698, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7699, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7700, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7701, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7702, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7703, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7704, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7705, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7706, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7707, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7708, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7709, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7710, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7711, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7712, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7713, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7714, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7715, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7716, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7717, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7718, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7719, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7720, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7721, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7722, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7723, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7724, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7725, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7726, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7727, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7728, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7729, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7730, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7731, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7732, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7733, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7734, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7735, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7736, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7737, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7738, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7739, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7740, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7741, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7742, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7743, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7744, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7745, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7746, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7747, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7748, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7749, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7750, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7751, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7752, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7753, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7754, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7755, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7756, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7757, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7758, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7759, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7760, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7761, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7762, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7763, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7764, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7765, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7766, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7767, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7768, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7769, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7770, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7771, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7772, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7773, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7774, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7775, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7776, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7777, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7778, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7779, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7780, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7781, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7782, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7783, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7784, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7785, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7786, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7787, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7788, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7789, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7790, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7791, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7792, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7793, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7794, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7795, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7796, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7797, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7798, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7799, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7800, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7801, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7802, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7803, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7804, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7805, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7806, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7807, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7808, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7809, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7810, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7811, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7812, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7813, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7814, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7815, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7816, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7817, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7818, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7819, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7820, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7821, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7822, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7823, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7824, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7825, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7826, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7827, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7828, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7829, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7830, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7831, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7832, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7833, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7834, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7835, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7836, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7837, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7838, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7839, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7840, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7841, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7842, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7843, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7844, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7845, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7846, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7847, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7848, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7849, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7850, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7851, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7852, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7853, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7854, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7855, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7856, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7857, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7858, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7859, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7860, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7861, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7862, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7863, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7864, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7865, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7866, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7867, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7868, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7869, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7870, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7871, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7872, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7873, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7874, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7875, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7876, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7877, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7878, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7879, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7880, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7881, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7882, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7883, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7884, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7885, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7886, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7887, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7888, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7889, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7890, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7891, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7892, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7893, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7894, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7895, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7896, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7897, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7898, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7899, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7900, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7901, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7902, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7903, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7904, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7905, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7906, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7907, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7908, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7909, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7910, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7911, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7912, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7913, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7914, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7915, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7916, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7917, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7918, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7919, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7920, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7921, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7922, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7923, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7924, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7925, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7926, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7927, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7928, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7929, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7930, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7931, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7932, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7933, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7934, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7935, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7936, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7937, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7938, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7939, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7940, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7941, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7942, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7943, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7944, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7945, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7946, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7947, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7948, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7949, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7950, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7951, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7952, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7953, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7954, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7955, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7956, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7957, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7960, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7961, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7962, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7963, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7964, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7965, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7968, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7969, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7970, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7971, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7972, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7973, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7974, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7975, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7976, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7977, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7978, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7979, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7980, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7981, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7982, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7983, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7984, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7985, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7986, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7987, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7988, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7989, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7990, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7991, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {7992, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7993, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7994, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7995, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7996, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7997, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7998, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {7999, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8000, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8001, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8002, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8003, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8004, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8005, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8008, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8009, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8010, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8011, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8012, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8013, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8016, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8017, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8018, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8019, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8020, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8021, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8022, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8023, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8025, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8027, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8029, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8031, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8032, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8033, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8034, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8035, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8036, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8037, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8038, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8039, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8040, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8041, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8042, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8043, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8044, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8045, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8046, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8047, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8048, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8049, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8050, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8051, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8052, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8053, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8054, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8055, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8056, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8057, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8058, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8059, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8060, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8061, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8064, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8065, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8066, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8067, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8068, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8069, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8070, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8071, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8072, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8073, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8074, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8075, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8076, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8077, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8078, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8079, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8080, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8081, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8082, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8083, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8084, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8085, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8086, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8087, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8088, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8089, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8090, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8091, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8092, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8093, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8094, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8095, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8096, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8097, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8098, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8099, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8100, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8101, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8102, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8103, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8104, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8105, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8106, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8107, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8108, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8109, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8110, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8111, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8112, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8113, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8114, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8115, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8116, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8118, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8119, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8120, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8121, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8122, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8123, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8124, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8125, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8126, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8127, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8128, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8129, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8130, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8131, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8132, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8134, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8135, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8136, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8137, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8138, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8139, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8140, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8141, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8142, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8143, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8144, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8145, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8146, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8147, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8150, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8151, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8152, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8153, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8154, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8155, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8157, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8158, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8159, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8160, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8161, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8162, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8163, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8164, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8165, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8166, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8167, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8168, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8169, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8170, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8171, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8172, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8173, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8174, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8175, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8178, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8179, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8180, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8182, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8183, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8184, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8185, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8186, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8187, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8188, Unicode::Category_Letter_Titlecase, Unicode::Direction_Left_To_Right}, + {8189, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8190, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {8192, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8193, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8194, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8195, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8196, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8197, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8198, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8199, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8200, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8201, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8202, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8203, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8204, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8205, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8206, Unicode::Category_Other_Format, Unicode::Direction_Left_To_Right}, + {8207, Unicode::Category_Other_Format, Unicode::Direction_Right_To_Left}, + {8208, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {8209, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {8210, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {8211, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {8212, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {8213, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {8214, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8215, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8216, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {8217, Unicode::Category_Punctuation_FinalQuote, Unicode::Direction_Other_Neutral}, + {8218, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {8219, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {8220, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {8221, Unicode::Category_Punctuation_FinalQuote, Unicode::Direction_Other_Neutral}, + {8222, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {8223, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {8224, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8225, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8226, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8227, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8228, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8229, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8230, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8231, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8232, Unicode::Category_Separator_Line, Unicode::Direction_White_Space}, + {8233, Unicode::Category_Separator_Paragraph, Unicode::Direction_Paragraph_Separator}, + {8234, Unicode::Category_Other_Format, Unicode::Direction_Left_To_Right_Embedding}, + {8235, Unicode::Category_Other_Format, Unicode::Direction_Right_To_Left_Embedding}, + {8236, Unicode::Category_Other_Format, Unicode::Direction_Pop_Directional_Formatting}, + {8237, Unicode::Category_Other_Format, Unicode::Direction_Left_To_Right_Override}, + {8238, Unicode::Category_Other_Format, Unicode::Direction_Right_To_Left_Override}, + {8239, Unicode::Category_Separator_Space, Unicode::Direction_Common_Separator}, + {8240, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {8241, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {8242, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {8243, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {8244, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {8245, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8246, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8247, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8248, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8249, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {8250, Unicode::Category_Punctuation_FinalQuote, Unicode::Direction_Other_Neutral}, + {8251, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8252, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8253, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8254, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8255, Unicode::Category_Punctuation_Connector, Unicode::Direction_Other_Neutral}, + {8256, Unicode::Category_Punctuation_Connector, Unicode::Direction_Other_Neutral}, + {8257, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8258, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8259, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8260, Unicode::Category_Symbol_Math, Unicode::Direction_Common_Separator}, + {8261, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {8262, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {8263, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8264, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8265, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8266, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8267, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8268, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8269, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8270, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8271, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8272, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8273, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8274, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8275, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8276, Unicode::Category_Punctuation_Connector, Unicode::Direction_Other_Neutral}, + {8277, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8278, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8279, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8280, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8281, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8282, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8283, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8284, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8285, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8286, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {8287, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {8288, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8289, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8290, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8291, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8292, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8294, Unicode::Category_Other_Format, Unicode::Direction_Left_To_Right_Isolate}, + {8295, Unicode::Category_Other_Format, Unicode::Direction_Right_To_Left_Isolate}, + {8296, Unicode::Category_Other_Format, Unicode::Direction_First_Strong_Isolate}, + {8297, Unicode::Category_Other_Format, Unicode::Direction_Pop_Directional_Isolate}, + {8298, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8299, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8300, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8301, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8302, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8303, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {8304, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8305, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8308, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8309, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8310, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8311, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8312, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8313, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8314, Unicode::Category_Symbol_Math, Unicode::Direction_European_Separator}, + {8315, Unicode::Category_Symbol_Math, Unicode::Direction_European_Separator}, + {8316, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8317, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {8318, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {8319, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8320, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8321, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8322, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8323, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8324, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8325, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8326, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8327, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8328, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8329, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {8330, Unicode::Category_Symbol_Math, Unicode::Direction_European_Separator}, + {8331, Unicode::Category_Symbol_Math, Unicode::Direction_European_Separator}, + {8332, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8333, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {8334, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {8336, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8337, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8338, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8339, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8340, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8341, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8342, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8343, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8344, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8345, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8346, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8347, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8348, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {8352, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8353, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8354, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8355, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8356, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8357, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8358, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8359, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8360, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8361, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8362, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8363, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8364, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8365, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8366, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8367, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8368, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8369, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8370, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8371, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8372, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8373, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8374, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8375, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8376, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8377, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8378, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8379, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8380, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8381, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8382, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8383, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {8400, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8401, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8402, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8403, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8404, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8405, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8406, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8407, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8408, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8409, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8410, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8411, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8412, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8413, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {8414, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {8415, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {8416, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {8417, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8418, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {8419, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {8420, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {8421, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8422, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8423, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8424, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8425, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8426, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8427, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8428, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8429, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8430, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8431, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8432, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {8448, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8449, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8450, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8451, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8452, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8453, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8454, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8455, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8456, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8457, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8458, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8459, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8460, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8461, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8462, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8463, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8464, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8465, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8466, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8467, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8468, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8469, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8470, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8471, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8472, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8473, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8474, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8475, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8476, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8477, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8478, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8479, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8480, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8481, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8482, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8483, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8484, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8485, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8486, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8487, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8488, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8489, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8490, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8491, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8492, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8493, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8494, Unicode::Category_Symbol_Other, Unicode::Direction_European_Terminator}, + {8495, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8496, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8497, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8498, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8499, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8500, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {8502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {8503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {8504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {8505, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8506, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8507, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8508, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8509, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8510, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8511, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8512, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8513, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8514, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8515, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8516, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8517, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8518, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8519, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8520, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8521, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8522, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8523, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8524, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8525, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8526, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8527, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {8528, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8529, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8530, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8531, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8532, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8533, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8534, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8535, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8536, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8537, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8538, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8539, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8540, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8541, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8542, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8543, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8544, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8545, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8546, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8547, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8548, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8549, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8550, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8551, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8552, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8553, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8554, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8555, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8556, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8557, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8558, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8559, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8560, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8561, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8562, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8563, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8564, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8565, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8566, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8567, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8568, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8569, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8570, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8571, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8572, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8573, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8574, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8575, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8576, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8577, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8578, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8579, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {8580, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {8581, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8582, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8583, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8584, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {8585, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {8586, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8587, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8592, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8593, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8594, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8595, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8596, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8597, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8598, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8599, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8600, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8601, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8602, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8603, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8604, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8605, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8606, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8607, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8608, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8609, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8610, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8611, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8612, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8613, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8614, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8615, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8616, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8617, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8618, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8619, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8620, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8621, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8622, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8623, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8624, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8625, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8626, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8627, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8628, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8629, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8630, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8631, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8632, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8633, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8634, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8635, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8636, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8637, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8638, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8639, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8640, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8641, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8642, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8643, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8644, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8645, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8646, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8647, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8648, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8649, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8650, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8651, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8652, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8653, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8654, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8655, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8656, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8657, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8658, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8659, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8660, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8661, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8662, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8663, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8664, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8665, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8666, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8667, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8668, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8669, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8670, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8671, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8672, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8673, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8674, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8675, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8676, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8677, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8678, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8679, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8680, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8681, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8682, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8683, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8684, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8685, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8686, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8687, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8688, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8689, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8690, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8691, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8692, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8693, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8694, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8695, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8696, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8697, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8698, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8699, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8700, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8701, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8702, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8703, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8704, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8705, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8706, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8707, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8708, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8709, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8710, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8711, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8712, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8713, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8714, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8715, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8716, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8717, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8718, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8719, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8720, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8721, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8722, Unicode::Category_Symbol_Math, Unicode::Direction_European_Separator}, + {8723, Unicode::Category_Symbol_Math, Unicode::Direction_European_Terminator}, + {8724, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8725, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8726, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8727, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8728, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8729, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8730, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8731, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8732, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8733, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8734, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8735, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8736, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8737, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8738, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8739, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8740, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8741, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8742, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8743, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8744, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8745, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8746, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8747, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8748, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8749, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8750, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8751, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8752, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8753, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8754, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8755, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8756, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8757, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8758, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8759, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8760, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8761, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8762, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8763, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8764, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8765, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8766, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8767, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8768, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8769, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8770, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8771, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8772, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8773, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8774, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8775, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8776, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8777, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8778, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8779, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8780, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8781, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8782, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8783, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8784, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8785, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8786, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8787, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8788, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8789, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8790, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8791, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8792, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8793, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8794, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8795, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8796, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8797, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8798, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8799, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8800, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8801, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8802, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8803, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8804, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8805, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8806, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8807, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8808, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8809, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8810, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8811, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8812, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8813, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8814, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8815, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8816, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8817, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8818, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8819, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8820, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8821, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8822, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8823, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8824, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8825, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8826, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8827, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8828, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8829, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8830, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8831, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8832, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8833, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8834, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8835, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8836, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8837, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8838, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8839, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8840, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8841, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8842, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8843, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8844, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8845, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8846, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8847, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8848, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8849, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8850, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8851, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8852, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8853, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8854, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8855, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8856, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8857, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8858, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8859, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8860, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8861, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8862, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8863, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8864, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8865, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8866, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8867, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8868, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8869, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8870, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8871, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8872, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8873, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8874, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8875, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8876, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8877, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8878, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8879, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8880, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8881, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8882, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8883, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8884, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8885, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8886, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8887, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8888, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8889, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8890, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8891, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8892, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8893, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8894, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8895, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8896, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8897, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8898, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8899, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8900, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8901, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8902, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8903, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8904, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8905, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8906, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8907, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8908, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8909, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8910, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8911, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8912, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8913, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8914, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8915, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8916, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8917, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8918, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8919, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8920, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8921, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8922, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8923, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8924, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8925, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8926, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8927, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8928, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8929, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8930, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8931, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8932, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8933, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8934, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8935, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8936, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8937, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8938, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8939, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8940, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8941, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8942, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8943, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8944, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8945, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8946, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8947, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8948, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8949, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8950, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8951, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8952, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8953, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8954, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8955, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8956, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8957, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8958, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8959, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8960, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8961, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8962, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8963, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8964, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8965, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8966, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8967, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8968, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {8969, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {8970, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {8971, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {8972, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8973, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8974, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8975, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8976, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8977, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8978, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8979, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8980, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8981, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8982, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8983, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8984, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8985, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8986, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8987, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8988, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8989, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8990, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8991, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8992, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8993, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {8994, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8995, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8996, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8997, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8998, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {8999, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9000, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9001, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {9002, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {9003, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9004, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9005, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9006, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9007, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9008, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9009, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9010, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9011, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9012, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9013, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9014, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9015, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9016, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9017, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9018, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9019, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9020, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9021, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9022, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9023, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9024, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9025, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9026, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9027, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9028, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9029, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9030, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9031, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9032, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9033, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9034, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9035, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9036, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9037, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9038, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9039, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9040, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9041, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9042, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9043, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9044, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9045, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9046, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9047, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9048, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9049, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9050, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9051, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9052, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9053, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9054, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9055, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9056, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9057, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9058, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9059, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9060, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9061, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9062, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9063, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9064, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9065, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9066, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9067, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9068, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9069, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9070, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9071, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9072, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9073, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9074, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9075, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9076, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9077, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9078, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9079, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9080, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9081, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9082, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9083, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9084, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9085, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9086, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9087, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9088, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9089, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9090, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9091, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9092, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9093, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9094, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9095, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9096, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9097, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9098, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9099, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9100, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9101, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9102, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9103, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9104, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9105, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9106, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9107, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9108, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9109, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9110, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9111, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9112, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9113, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9114, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9115, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9116, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9117, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9118, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9119, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9120, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9121, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9122, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9123, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9124, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9125, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9126, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9127, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9128, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9129, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9130, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9131, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9132, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9133, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9134, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9135, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9136, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9137, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9138, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9139, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9140, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9141, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9142, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9143, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9144, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9145, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9146, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9147, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9148, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9149, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9150, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9151, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9152, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9153, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9154, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9155, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9156, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9157, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9158, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9159, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9160, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9161, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9162, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9163, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9164, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9165, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9166, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9167, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9168, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9169, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9170, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9171, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9172, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9173, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9174, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9175, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9176, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9177, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9178, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9179, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9180, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9181, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9182, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9183, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9184, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9185, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9186, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9187, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9188, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9189, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9190, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9191, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9192, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9193, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9194, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9195, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9196, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9197, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9198, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9199, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9200, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9201, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9202, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9203, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9204, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9205, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9206, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9207, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9208, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9209, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9210, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9211, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9212, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9213, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9214, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9215, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9216, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9217, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9218, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9219, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9220, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9221, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9222, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9223, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9224, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9225, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9226, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9227, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9228, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9229, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9230, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9231, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9232, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9233, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9234, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9235, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9236, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9237, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9238, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9239, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9240, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9241, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9242, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9243, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9244, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9245, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9246, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9247, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9248, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9249, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9250, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9251, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9252, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9253, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9254, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9280, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9281, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9282, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9283, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9284, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9285, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9286, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9287, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9288, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9289, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9290, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9312, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9313, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9314, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9315, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9316, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9317, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9318, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9319, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9320, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9321, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9322, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9323, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9324, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9325, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9326, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9327, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9328, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9329, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9330, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9331, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9332, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9333, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9334, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9335, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9336, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9337, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9338, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9339, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9340, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9341, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9342, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9343, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9344, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9345, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9346, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9347, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9348, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9349, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9350, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9351, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9352, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9353, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9354, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9355, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9356, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9357, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9358, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9359, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9360, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9361, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9362, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9363, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9364, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9365, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9366, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9367, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9368, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9369, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9370, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9371, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {9372, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9373, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9374, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9375, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9376, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9377, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9378, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9379, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9380, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9381, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9382, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9383, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9384, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9385, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9386, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9387, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9388, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9389, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9390, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9391, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9392, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9393, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9394, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9395, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9396, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9397, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9398, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9399, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9400, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9401, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9402, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9403, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9404, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9405, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9406, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9407, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9408, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9409, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9410, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9411, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9412, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9413, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9414, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9415, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9416, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9417, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9418, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9419, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9420, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9421, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9422, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9423, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9424, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9425, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9426, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9427, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9428, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9429, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9430, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9431, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9432, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9433, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9434, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9435, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9436, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9437, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9438, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9439, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9440, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9441, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9442, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9443, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9444, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9445, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9446, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9447, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9448, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9449, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9450, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9451, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9452, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9453, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9454, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9455, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9456, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9457, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9458, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9459, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9460, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9461, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9462, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9463, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9464, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9465, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9466, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9467, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9468, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9469, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9470, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9471, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {9472, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9473, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9474, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9475, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9476, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9477, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9478, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9479, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9480, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9481, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9482, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9483, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9484, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9485, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9486, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9487, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9488, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9489, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9490, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9491, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9492, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9493, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9494, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9495, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9496, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9497, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9498, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9499, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9500, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9501, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9502, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9503, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9504, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9505, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9506, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9507, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9508, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9509, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9510, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9511, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9512, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9513, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9514, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9515, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9516, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9517, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9518, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9519, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9520, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9521, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9522, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9523, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9524, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9525, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9526, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9527, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9528, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9529, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9530, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9531, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9532, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9533, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9534, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9535, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9536, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9537, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9538, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9539, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9540, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9541, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9542, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9543, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9544, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9545, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9546, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9547, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9548, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9549, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9550, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9551, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9552, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9553, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9554, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9555, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9556, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9557, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9558, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9559, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9560, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9561, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9562, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9563, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9564, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9565, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9566, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9567, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9568, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9569, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9570, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9571, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9572, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9573, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9574, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9575, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9576, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9577, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9578, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9579, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9580, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9581, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9582, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9583, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9584, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9585, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9586, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9587, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9588, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9589, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9590, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9591, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9592, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9593, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9594, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9595, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9596, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9597, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9598, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9599, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9600, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9601, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9602, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9603, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9604, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9605, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9606, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9607, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9608, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9609, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9610, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9611, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9612, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9613, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9614, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9615, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9616, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9617, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9618, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9619, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9620, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9621, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9622, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9623, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9624, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9625, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9626, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9627, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9628, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9629, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9630, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9631, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9632, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9633, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9634, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9635, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9636, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9637, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9638, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9639, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9640, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9641, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9642, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9643, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9644, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9645, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9646, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9647, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9648, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9649, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9650, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9651, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9652, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9653, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9654, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9655, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9656, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9657, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9658, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9659, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9660, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9661, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9662, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9663, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9664, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9665, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9666, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9667, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9668, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9669, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9670, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9671, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9672, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9673, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9674, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9675, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9676, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9677, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9678, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9679, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9680, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9681, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9682, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9683, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9684, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9685, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9686, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9687, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9688, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9689, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9690, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9691, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9692, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9693, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9694, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9695, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9696, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9697, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9698, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9699, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9700, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9701, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9702, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9703, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9704, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9705, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9706, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9707, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9708, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9709, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9710, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9711, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9712, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9713, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9714, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9715, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9716, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9717, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9718, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9719, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9720, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9721, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9722, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9723, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9724, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9725, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9726, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9727, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9728, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9729, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9730, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9731, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9732, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9733, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9734, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9735, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9736, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9737, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9738, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9739, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9740, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9741, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9742, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9743, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9744, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9745, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9746, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9747, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9748, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9749, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9750, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9751, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9752, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9753, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9754, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9755, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9756, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9757, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9758, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9759, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9760, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9761, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9762, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9763, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9764, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9765, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9766, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9767, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9768, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9769, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9770, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9771, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9772, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9773, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9774, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9775, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9776, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9777, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9778, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9779, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9780, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9781, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9782, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9783, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9784, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9785, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9786, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9787, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9788, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9789, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9790, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9791, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9792, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9793, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9794, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9795, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9796, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9797, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9798, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9799, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9800, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9801, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9802, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9803, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9804, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9805, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9806, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9807, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9808, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9809, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9810, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9811, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9812, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9813, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9814, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9815, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9816, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9817, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9818, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9819, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9820, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9821, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9822, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9823, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9824, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9825, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9826, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9827, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9828, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9829, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9830, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9831, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9832, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9833, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9834, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9835, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9836, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9837, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9838, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9839, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {9840, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9841, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9842, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9843, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9844, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9845, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9846, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9847, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9848, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9849, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9850, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9851, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9852, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9853, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9854, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9855, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9856, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9857, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9858, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9859, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9860, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9861, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9862, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9863, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9864, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9865, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9866, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9867, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9868, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9869, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9870, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9871, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9872, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9873, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9874, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9875, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9876, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9877, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9878, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9879, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9880, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9881, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9882, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9883, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9884, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9885, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9886, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9887, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9888, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9889, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9890, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9891, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9892, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9893, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9894, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9895, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9896, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9897, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9898, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9899, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9900, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {9901, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9902, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9903, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9904, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9905, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9906, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9907, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9908, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9909, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9910, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9911, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9912, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9913, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9914, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9915, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9916, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9917, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9918, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9919, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9920, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9921, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9922, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9923, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9924, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9925, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9926, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9927, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9928, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9929, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9930, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9931, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9932, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9933, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9934, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9935, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9936, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9937, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9938, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9939, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9940, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9941, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9942, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9943, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9944, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9945, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9946, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9947, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9948, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9949, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9950, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9951, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9952, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9953, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9954, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9955, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9956, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9957, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9958, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9959, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9960, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9961, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9962, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9963, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9964, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9965, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9966, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9967, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9968, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9969, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9970, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9971, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9972, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9973, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9974, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9975, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9976, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9977, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9978, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9979, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9980, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9981, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9982, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9983, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9984, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9985, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9986, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9987, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9988, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9989, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9990, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9991, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9992, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9993, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9994, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9995, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9996, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9997, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9998, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {9999, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10000, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10001, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10002, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10003, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10004, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10005, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10006, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10007, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10008, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10009, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10010, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10011, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10012, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10013, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10014, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10015, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10016, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10017, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10018, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10019, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10020, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10021, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10022, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10023, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10024, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10025, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10026, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10027, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10028, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10029, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10030, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10031, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10032, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10033, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10034, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10035, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10036, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10037, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10038, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10039, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10040, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10041, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10042, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10043, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10044, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10045, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10046, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10047, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10048, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10049, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10050, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10051, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10052, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10053, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10054, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10055, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10056, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10057, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10058, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10059, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10060, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10061, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10062, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10063, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10064, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10065, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10066, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10067, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10068, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10069, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10070, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10071, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10072, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10073, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10074, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10075, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10076, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10077, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10078, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10079, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10080, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10081, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10082, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10083, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10084, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10085, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10086, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10087, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10088, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10089, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10090, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10091, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10092, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10093, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10094, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10095, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10096, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10097, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10098, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10099, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10100, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10101, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10102, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10103, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10104, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10105, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10106, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10107, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10108, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10109, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10110, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10111, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10112, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10113, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10114, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10115, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10116, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10117, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10118, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10119, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10120, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10121, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10122, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10123, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10124, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10125, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10126, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10127, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10128, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10129, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10130, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10131, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {10132, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10133, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10134, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10135, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10136, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10137, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10138, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10139, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10140, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10141, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10142, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10143, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10144, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10145, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10146, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10147, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10148, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10149, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10150, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10151, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10152, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10153, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10154, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10155, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10156, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10157, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10158, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10159, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10160, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10161, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10162, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10163, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10164, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10165, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10166, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10167, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10168, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10169, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10170, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10171, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10172, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10173, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10174, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10175, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {10176, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10177, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10178, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10179, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10180, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10181, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10182, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10183, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10184, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10185, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10186, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10187, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10188, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10189, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10190, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10191, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10192, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10193, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10194, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10195, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10196, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10197, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10198, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10199, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10200, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10201, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10202, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10203, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10204, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10205, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10206, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10207, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10208, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10209, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10210, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10211, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10212, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10213, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10214, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10215, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10216, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10217, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10218, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10219, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10220, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10221, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10222, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10223, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10224, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10225, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10226, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10227, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10228, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10229, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10230, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10231, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10232, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10233, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10234, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10235, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10236, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10237, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10238, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10239, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10240, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10241, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10242, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10243, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10244, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10245, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10246, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10247, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10248, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10249, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10250, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10251, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10252, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10253, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10254, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10255, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10256, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10257, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10258, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10259, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10260, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10261, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10262, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10263, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10264, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10265, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10266, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10267, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10268, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10269, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10270, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10271, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10272, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10273, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10274, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10275, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10276, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10277, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10278, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10279, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10280, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10281, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10282, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10283, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10284, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10285, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10286, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10287, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10288, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10289, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10290, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10291, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10292, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10293, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10294, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10295, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10296, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10297, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10298, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10299, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10300, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10301, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10302, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10303, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10304, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10305, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10306, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10307, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10308, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10309, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10310, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10311, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10312, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10313, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10314, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10315, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10316, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10317, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10318, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10319, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10320, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10321, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10322, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10323, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10324, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10325, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10326, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10327, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10328, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10329, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10330, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10331, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10332, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10333, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10334, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10335, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10336, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10337, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10338, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10339, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10340, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10341, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10342, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10343, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10344, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10345, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10346, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10347, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10348, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10349, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10350, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10351, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10352, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10353, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10354, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10355, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10356, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10357, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10358, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10359, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10360, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10361, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10362, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10363, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10364, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10365, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10366, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10367, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10368, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10369, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10370, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10371, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10372, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10373, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10374, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10375, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10376, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10377, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10378, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10379, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10380, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10381, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10382, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10383, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10384, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10385, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10386, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10387, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10388, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10389, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10390, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10391, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10392, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10393, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10394, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10395, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10396, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10397, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10398, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10399, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10400, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10401, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10402, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10403, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10404, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10405, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10406, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10407, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10408, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10409, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10410, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10411, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10412, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10413, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10414, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10415, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10416, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10417, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10418, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10419, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10420, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10421, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10422, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10423, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10424, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10425, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10426, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10427, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10428, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10429, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10430, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10431, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10432, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10433, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10434, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10435, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10436, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10437, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10438, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10439, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10440, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10441, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10442, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10443, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10444, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10445, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10446, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10447, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10448, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10449, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10450, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10451, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10452, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10453, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10454, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10455, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10456, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10457, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10458, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10459, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10460, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10461, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10462, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10463, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10464, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10465, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10466, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10467, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10468, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10469, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10470, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10471, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10472, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10473, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10474, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10475, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10476, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10477, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10478, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10479, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10480, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10481, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10482, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10483, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10484, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10485, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10486, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10487, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10488, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10489, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10490, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10491, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10492, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10493, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10494, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10495, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {10496, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10497, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10498, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10499, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10500, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10501, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10502, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10503, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10504, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10505, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10506, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10507, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10508, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10509, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10510, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10511, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10512, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10513, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10514, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10515, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10516, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10517, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10518, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10519, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10520, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10521, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10522, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10523, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10524, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10525, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10526, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10527, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10528, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10529, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10530, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10531, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10532, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10533, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10534, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10535, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10536, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10537, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10538, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10539, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10540, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10541, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10542, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10543, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10544, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10545, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10546, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10547, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10548, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10549, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10550, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10551, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10552, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10553, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10554, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10555, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10556, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10557, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10558, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10559, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10560, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10561, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10562, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10563, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10564, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10565, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10566, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10567, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10568, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10569, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10570, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10571, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10572, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10573, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10574, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10575, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10576, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10577, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10578, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10579, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10580, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10581, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10582, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10583, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10584, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10585, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10586, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10587, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10588, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10589, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10590, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10591, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10592, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10593, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10594, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10595, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10596, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10597, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10598, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10599, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10600, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10601, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10602, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10603, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10604, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10605, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10606, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10607, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10608, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10609, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10610, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10611, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10612, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10613, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10614, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10615, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10616, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10617, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10618, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10619, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10620, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10621, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10622, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10623, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10624, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10625, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10626, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10627, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10628, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10629, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10630, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10631, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10632, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10633, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10634, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10635, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10636, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10637, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10638, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10639, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10640, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10641, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10642, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10643, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10644, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10645, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10646, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10647, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10648, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10649, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10650, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10651, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10652, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10653, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10654, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10655, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10656, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10657, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10658, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10659, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10660, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10661, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10662, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10663, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10664, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10665, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10666, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10667, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10668, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10669, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10670, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10671, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10672, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10673, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10674, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10675, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10676, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10677, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10678, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10679, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10680, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10681, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10682, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10683, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10684, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10685, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10686, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10687, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10688, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10689, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10690, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10691, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10692, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10693, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10694, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10695, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10696, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10697, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10698, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10699, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10700, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10701, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10702, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10703, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10704, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10705, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10706, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10707, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10708, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10709, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10710, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10711, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10712, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10713, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10714, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10715, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10716, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10717, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10718, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10719, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10720, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10721, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10722, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10723, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10724, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10725, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10726, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10727, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10728, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10729, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10730, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10731, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10732, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10733, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10734, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10735, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10736, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10737, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10738, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10739, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10740, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10741, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10742, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10743, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10744, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10745, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10746, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10747, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10748, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {10749, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {10750, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10751, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10752, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10753, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10754, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10755, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10756, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10757, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10758, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10759, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10760, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10761, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10762, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10763, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10764, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10765, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10766, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10767, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10768, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10769, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10770, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10771, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10772, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10773, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10774, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10775, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10776, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10777, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10778, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10779, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10780, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10781, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10782, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10783, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10784, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10785, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10786, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10787, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10788, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10789, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10790, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10791, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10792, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10793, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10794, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10795, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10796, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10797, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10798, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10799, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10800, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10801, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10802, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10803, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10804, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10805, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10806, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10807, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10808, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10809, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10810, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10811, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10812, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10813, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10814, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10815, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10816, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10817, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10818, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10819, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10820, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10821, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10822, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10823, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10824, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10825, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10826, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10827, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10828, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10829, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10830, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10831, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10832, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10833, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10834, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10835, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10836, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10837, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10838, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10839, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10840, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10841, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10842, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10843, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10844, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10845, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10846, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10847, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10848, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10849, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10850, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10851, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10852, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10853, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10854, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10855, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10856, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10857, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10858, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10859, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10860, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10861, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10862, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10863, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10864, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10865, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10866, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10867, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10868, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10869, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10870, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10871, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10872, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10873, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10874, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10875, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10876, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10877, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10878, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10879, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10880, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10881, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10882, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10883, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10884, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10885, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10886, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10887, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10888, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10889, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10890, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10891, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10892, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10893, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10894, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10895, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10896, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10897, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10898, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10899, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10900, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10901, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10902, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10903, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10904, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10905, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10906, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10907, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10908, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10909, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10910, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10911, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10912, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10913, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10914, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10915, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10916, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10917, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10918, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10919, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10920, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10921, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10922, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10923, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10924, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10925, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10926, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10927, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10928, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10929, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10930, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10931, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10932, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10933, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10934, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10935, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10936, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10937, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10938, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10939, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10940, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10941, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10942, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10943, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10944, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10945, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10946, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10947, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10948, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10949, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10950, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10951, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10952, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10953, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10954, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10955, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10956, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10957, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10958, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10959, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10960, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10961, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10962, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10963, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10964, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10965, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10966, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10967, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10968, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10969, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10970, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10971, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10972, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10973, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10974, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10975, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10976, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10977, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10978, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10979, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10980, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10981, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10982, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10983, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10984, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10985, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10986, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10987, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10988, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10989, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10990, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10991, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10992, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10993, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10994, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10995, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10996, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10997, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10998, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {10999, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11000, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11001, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11002, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11003, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11004, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11005, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11006, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11007, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11008, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11009, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11010, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11011, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11012, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11013, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11014, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11015, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11016, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11017, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11018, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11019, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11020, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11021, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11022, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11023, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11024, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11025, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11026, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11027, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11028, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11029, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11030, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11031, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11032, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11033, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11034, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11035, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11036, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11037, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11038, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11039, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11040, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11041, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11042, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11043, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11044, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11045, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11046, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11047, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11048, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11049, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11050, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11051, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11052, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11053, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11054, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11055, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11056, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11057, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11058, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11059, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11060, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11061, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11062, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11063, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11064, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11065, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11066, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11067, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11068, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11069, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11070, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11071, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11072, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11073, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11074, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11075, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11076, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11077, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11078, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11079, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11080, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11081, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11082, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11083, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11084, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {11085, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11086, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11087, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11088, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11089, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11090, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11091, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11092, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11093, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11094, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11095, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11096, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11097, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11098, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11099, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11100, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11101, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11102, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11103, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11104, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11105, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11106, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11107, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11108, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11109, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11110, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11111, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11112, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11113, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11114, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11115, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11116, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11117, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11118, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11119, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11120, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11121, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11122, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11123, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11126, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11127, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11128, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11129, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11130, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11131, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11132, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11133, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11134, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11135, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11136, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11137, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11138, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11139, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11140, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11141, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11142, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11143, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11144, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11145, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11146, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11147, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11148, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11149, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11150, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11151, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11152, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11153, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11154, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11155, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11156, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11157, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11160, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11161, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11162, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11163, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11164, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11165, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11166, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11167, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11168, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11169, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11170, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11171, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11172, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11173, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11174, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11175, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11176, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11177, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11178, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11179, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11180, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11181, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11182, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11183, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11184, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11185, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11186, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11187, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11188, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11189, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11190, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11191, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11192, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11193, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11194, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11195, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11196, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11197, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11198, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11199, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11200, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11201, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11202, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11203, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11204, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11205, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11206, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11207, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11208, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11210, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11211, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11212, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11213, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11214, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11215, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11216, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11217, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11218, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11219, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11220, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11221, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11222, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11223, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11224, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11225, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11226, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11227, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11228, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11229, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11230, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11231, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11232, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11233, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11234, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11235, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11236, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11237, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11238, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11239, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11240, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11241, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11242, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11243, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11244, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11245, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11246, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11247, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11248, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11249, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11250, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11251, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11252, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11253, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11254, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11255, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11256, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11257, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11258, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11259, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11260, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11261, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11262, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11264, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11265, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11266, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11267, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11268, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11269, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11270, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11271, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11272, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11273, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11274, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11275, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11276, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11277, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11278, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11279, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11280, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11281, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11282, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11283, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11284, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11285, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11286, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11287, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11288, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11289, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11290, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11291, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11292, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11293, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11294, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11295, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11296, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11297, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11298, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11299, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11300, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11301, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11302, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11303, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11304, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11305, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11306, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11307, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11308, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11309, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11310, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11312, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11313, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11314, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11315, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11316, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11317, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11318, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11319, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11320, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11321, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11322, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11323, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11324, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11325, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11326, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11327, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11328, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11329, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11330, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11331, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11332, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11333, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11334, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11335, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11336, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11337, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11338, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11339, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11340, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11341, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11342, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11343, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11344, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11345, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11346, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11347, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11348, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11349, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11350, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11351, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11352, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11353, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11354, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11355, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11356, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11357, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11358, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11360, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11361, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11362, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11363, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11364, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11365, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11366, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11367, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11368, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11369, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11370, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11371, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11372, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11373, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11374, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11375, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11376, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11377, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11378, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11379, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11380, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11381, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11382, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11383, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11384, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11385, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11386, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11387, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11388, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {11389, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {11390, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11391, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11392, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11393, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11394, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11395, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11396, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11397, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11398, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11399, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11400, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11401, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11402, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11403, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11404, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11405, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11406, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11407, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11408, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11409, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11410, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11411, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11412, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11413, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11414, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11415, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11416, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11417, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11418, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11419, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11420, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11421, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11422, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11423, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11424, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11425, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11426, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11427, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11428, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11429, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11430, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11431, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11432, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11433, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11434, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11435, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11436, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11437, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11438, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11439, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11440, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11441, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11442, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11443, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11444, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11445, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11446, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11447, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11448, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11449, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11450, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11451, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11452, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11453, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11454, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11455, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11456, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11457, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11458, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11459, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11460, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11461, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11462, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11463, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11464, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11465, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11466, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11467, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11468, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11469, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11470, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11471, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11472, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11473, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11474, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11475, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11476, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11477, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11478, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11479, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11480, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11481, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11482, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11483, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11484, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11485, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11486, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11487, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11488, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11489, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11490, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11491, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11492, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11493, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11494, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11495, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11496, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11497, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11498, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11499, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11500, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11501, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11502, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11503, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11504, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11505, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11506, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {11507, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11513, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11514, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11515, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11516, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11517, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {11518, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11519, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11520, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11521, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11522, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11523, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11524, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11525, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11526, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11527, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11528, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11529, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11530, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11531, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11532, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11533, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11534, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11535, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11536, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11537, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11538, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11539, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11540, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11541, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11542, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11543, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11544, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11545, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11546, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11547, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11548, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11549, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11550, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11551, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11552, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11553, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11554, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11555, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11556, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11557, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11559, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11565, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {11568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11631, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {11632, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {11647, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {11744, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11745, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11746, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11747, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11748, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11749, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11750, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11751, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11752, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11753, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11754, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11755, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11756, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11757, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11758, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11759, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11760, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11761, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11762, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11763, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11764, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11765, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11766, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11767, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11768, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11769, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11770, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11771, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11772, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11773, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11774, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11775, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {11776, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11777, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11778, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {11779, Unicode::Category_Punctuation_FinalQuote, Unicode::Direction_Other_Neutral}, + {11780, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {11781, Unicode::Category_Punctuation_FinalQuote, Unicode::Direction_Other_Neutral}, + {11782, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11783, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11784, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11785, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {11786, Unicode::Category_Punctuation_FinalQuote, Unicode::Direction_Other_Neutral}, + {11787, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11788, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {11789, Unicode::Category_Punctuation_FinalQuote, Unicode::Direction_Other_Neutral}, + {11790, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11791, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11792, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11793, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11794, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11795, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11796, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11797, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11798, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11799, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {11800, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11801, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11802, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {11803, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11804, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {11805, Unicode::Category_Punctuation_FinalQuote, Unicode::Direction_Other_Neutral}, + {11806, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11807, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11808, Unicode::Category_Punctuation_InitialQuote, Unicode::Direction_Other_Neutral}, + {11809, Unicode::Category_Punctuation_FinalQuote, Unicode::Direction_Other_Neutral}, + {11810, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {11811, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {11812, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {11813, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {11814, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {11815, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {11816, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {11817, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {11818, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11819, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11820, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11821, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11822, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11823, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {11824, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11825, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11826, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11827, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11828, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11829, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11830, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11831, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11832, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11833, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11834, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {11835, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {11836, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11837, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11838, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11839, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11840, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {11841, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11842, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {11843, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11844, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11845, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11846, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11847, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11848, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11849, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11850, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11851, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11852, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11853, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11854, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {11904, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11905, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11906, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11907, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11908, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11909, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11910, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11911, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11912, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11913, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11914, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11915, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11916, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11917, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11918, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11919, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11920, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11921, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11922, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11923, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11924, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11925, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11926, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11927, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11928, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11929, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11931, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11932, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11933, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11934, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11935, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11936, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11937, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11938, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11939, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11940, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11941, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11942, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11943, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11944, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11945, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11946, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11947, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11948, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11949, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11950, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11951, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11952, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11953, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11954, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11955, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11956, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11957, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11958, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11959, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11960, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11961, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11962, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11963, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11964, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11965, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11966, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11967, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11968, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11969, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11970, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11971, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11972, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11973, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11974, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11975, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11976, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11977, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11978, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11979, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11980, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11981, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11982, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11983, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11984, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11985, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11986, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11987, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11988, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11989, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11990, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11991, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11992, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11993, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11994, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11995, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11996, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11997, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11998, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {11999, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12000, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12001, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12002, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12003, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12004, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12005, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12006, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12007, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12008, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12009, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12010, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12011, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12012, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12013, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12014, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12015, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12016, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12017, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12018, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12019, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12032, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12033, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12034, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12035, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12036, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12037, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12038, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12039, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12040, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12041, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12042, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12043, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12044, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12045, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12046, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12047, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12048, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12049, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12050, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12051, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12052, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12053, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12054, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12055, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12056, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12057, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12058, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12059, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12060, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12061, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12062, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12063, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12064, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12065, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12066, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12067, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12068, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12069, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12070, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12071, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12072, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12073, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12074, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12075, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12076, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12077, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12078, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12079, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12080, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12081, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12082, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12083, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12084, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12085, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12086, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12087, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12088, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12089, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12090, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12091, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12092, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12093, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12094, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12095, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12096, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12097, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12098, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12099, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12100, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12101, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12102, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12103, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12104, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12105, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12106, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12107, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12108, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12109, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12110, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12111, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12112, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12113, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12114, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12115, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12116, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12117, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12118, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12119, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12120, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12121, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12122, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12123, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12124, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12125, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12126, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12127, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12128, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12129, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12130, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12131, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12132, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12133, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12134, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12135, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12136, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12137, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12138, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12139, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12140, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12141, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12142, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12143, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12144, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12145, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12146, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12147, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12148, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12149, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12150, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12151, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12152, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12153, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12154, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12155, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12156, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12157, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12158, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12159, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12160, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12161, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12162, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12163, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12164, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12165, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12166, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12167, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12168, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12169, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12170, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12171, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12172, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12173, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12174, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12175, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12176, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12177, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12178, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12179, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12180, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12181, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12182, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12183, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12184, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12185, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12186, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12187, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12188, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12189, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12190, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12191, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12192, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12193, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12194, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12195, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12196, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12197, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12198, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12199, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12200, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12201, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12202, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12203, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12204, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12205, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12206, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12207, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12208, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12209, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12210, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12211, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12212, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12213, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12214, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12215, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12216, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12217, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12218, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12219, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12220, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12221, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12222, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12223, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12224, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12225, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12226, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12227, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12228, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12229, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12230, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12231, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12232, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12233, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12234, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12235, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12236, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12237, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12238, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12239, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12240, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12241, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12242, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12243, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12244, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12245, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12272, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12273, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12274, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12275, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12276, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12277, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12278, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12279, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12280, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12281, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12282, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12283, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12288, Unicode::Category_Separator_Space, Unicode::Direction_White_Space}, + {12289, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {12290, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {12291, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {12292, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12293, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12295, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12296, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {12297, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12298, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {12299, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12300, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {12301, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12302, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {12303, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12304, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {12305, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12306, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12307, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12308, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {12309, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12310, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {12311, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12312, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {12313, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12314, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {12315, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12316, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {12317, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {12318, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12319, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {12320, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12321, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12322, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12323, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12324, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12325, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12326, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12327, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12328, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12329, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12330, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {12331, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {12332, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {12333, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {12334, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {12335, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {12336, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {12337, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12338, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12339, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12340, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12341, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12342, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12343, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12344, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12345, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12346, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {12347, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12349, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {12350, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12351, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12441, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {12442, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {12443, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {12444, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {12445, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12446, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12448, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {12449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12519, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12530, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12531, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12532, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12533, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12534, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12535, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12539, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {12540, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12541, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12542, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {12543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12688, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12689, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12690, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12691, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12692, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12693, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12694, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12695, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12696, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12697, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12698, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12699, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12700, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12701, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12702, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12703, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12736, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12737, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12738, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12739, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12740, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12741, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12742, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12743, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12744, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12745, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12746, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12747, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12748, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12749, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12750, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12751, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12752, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12753, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12754, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12755, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12756, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12757, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12758, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12759, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12760, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12761, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12762, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12763, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12764, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12765, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12766, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12767, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12768, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12769, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12770, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12771, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12791, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {12800, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12801, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12802, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12803, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12804, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12805, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12806, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12807, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12808, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12809, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12810, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12811, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12812, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12813, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12814, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12815, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12816, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12817, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12818, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12819, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12820, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12821, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12822, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12823, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12824, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12825, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12826, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12827, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12828, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12829, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12830, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12832, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12833, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12834, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12835, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12836, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12837, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12838, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12839, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12840, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12841, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12842, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12843, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12844, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12845, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12846, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12847, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12848, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12849, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12850, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12851, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12852, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12853, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12854, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12855, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12856, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12857, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12858, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12859, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12860, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12861, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12862, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12863, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12864, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12865, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12866, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12867, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12868, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12869, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12870, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12871, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12872, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12873, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12874, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12875, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12876, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12877, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12878, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12879, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12880, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12881, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12882, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12883, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12884, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12885, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12886, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12887, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12888, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12889, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12890, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12891, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12892, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12893, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12894, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12895, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12896, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12897, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12898, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12899, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12900, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12901, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12902, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12903, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12904, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12905, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12906, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12907, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12908, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12909, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12910, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12911, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12912, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12913, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12914, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12915, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12916, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12917, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12918, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12919, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12920, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12921, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12922, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12923, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12924, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12925, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12926, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {12927, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12928, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12929, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12930, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12931, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12932, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12933, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12934, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12935, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12936, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12937, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {12938, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12939, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12940, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12941, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12942, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12943, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12944, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12945, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12946, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12947, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12948, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12949, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12950, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12951, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12952, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12953, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12954, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12955, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12956, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12957, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12958, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12959, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12960, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12961, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12962, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12963, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12964, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12965, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12966, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12967, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12968, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12969, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12970, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12971, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12972, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12973, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12974, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12975, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12976, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12977, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12978, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12979, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12980, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12981, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12982, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12983, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12984, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12985, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12986, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12987, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12988, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12989, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12990, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12991, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {12992, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12993, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12994, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12995, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12996, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12997, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12998, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {12999, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13000, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13001, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13002, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13003, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13004, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {13005, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {13006, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {13007, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {13008, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13009, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13010, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13011, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13012, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13013, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13014, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13015, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13016, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13017, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13018, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13019, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13020, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13021, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13022, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13023, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13024, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13025, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13026, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13027, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13028, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13029, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13030, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13031, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13032, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13033, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13034, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13035, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13036, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13037, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13038, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13039, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13040, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13041, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13042, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13043, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13044, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13045, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13046, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13047, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13048, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13049, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13050, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13051, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13052, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13053, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13054, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13056, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13057, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13058, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13059, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13060, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13061, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13062, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13063, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13064, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13065, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13066, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13067, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13068, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13069, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13070, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13071, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13072, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13073, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13074, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13075, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13076, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13077, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13078, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13079, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13080, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13081, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13082, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13083, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13084, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13085, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13086, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13087, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13088, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13089, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13090, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13091, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13092, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13093, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13094, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13095, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13096, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13097, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13098, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13099, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13100, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13101, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13102, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13103, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13104, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13105, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13106, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13107, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13108, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13109, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13110, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13111, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13112, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13113, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13114, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13115, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13116, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13117, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13118, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13119, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13120, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13121, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13122, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13123, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13124, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13125, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13126, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13127, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13128, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13129, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13130, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13131, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13132, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13133, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13134, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13135, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13136, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13137, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13138, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13139, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13140, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13141, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13142, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13143, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13144, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13145, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13146, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13147, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13148, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13149, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13150, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13151, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13152, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13153, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13154, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13155, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13156, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13157, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13158, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13159, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13160, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13161, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13162, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13163, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13164, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13165, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13166, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13167, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13168, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13169, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13170, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13171, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13172, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13173, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13174, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13175, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {13176, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {13177, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {13178, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {13179, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13180, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13181, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13182, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13183, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13184, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13185, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13186, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13187, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13188, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13189, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13190, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13191, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13192, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13193, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13194, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13195, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13196, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13197, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13198, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13199, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13200, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13201, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13202, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13203, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13204, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13205, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13206, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13207, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13208, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13209, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13210, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13211, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13212, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13213, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13214, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13215, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13216, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13217, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13218, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13219, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13220, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13221, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13222, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13223, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13224, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13225, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13226, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13227, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13228, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13229, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13230, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13231, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13232, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13233, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13234, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13235, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13236, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13237, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13238, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13239, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13240, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13241, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13242, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13243, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13244, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13245, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13246, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13247, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13248, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13249, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13250, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13251, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13252, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13253, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13254, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13255, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13256, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13257, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13258, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13259, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13260, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13261, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13262, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13263, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13264, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13265, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13266, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13267, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13268, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13269, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13270, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13271, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13272, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13273, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13274, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13275, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13276, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13277, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13278, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {13279, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {13280, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13281, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13282, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13283, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13284, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13285, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13286, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13287, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13288, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13289, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13290, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13291, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13292, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13293, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13294, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13295, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13296, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13297, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13298, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13299, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13300, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13301, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13302, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13303, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13304, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13305, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13306, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13307, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13308, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13309, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13310, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {13311, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19904, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19905, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19906, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19907, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19908, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19909, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19910, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19911, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19912, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19913, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19914, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19915, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19916, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19917, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19918, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19919, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19920, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19921, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19922, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19923, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19924, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19925, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19926, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19927, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19928, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19929, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19930, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19931, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19932, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19933, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19934, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19935, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19936, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19937, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19938, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19939, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19940, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19941, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19942, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19943, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19944, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19945, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19946, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19947, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19948, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19949, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19950, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19951, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19952, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19953, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19954, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19955, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19956, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19957, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19958, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19959, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19960, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19961, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19962, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19963, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19964, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19965, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19966, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {19967, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {40960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40981, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {40982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {40999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41132, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41134, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41135, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41136, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41137, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41139, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41140, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41141, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41142, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41143, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41144, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41145, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41146, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41147, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41148, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41149, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41150, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41151, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41152, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41153, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41154, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41155, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41156, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41157, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41158, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41519, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41530, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41531, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41532, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41533, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41534, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41535, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41540, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41541, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41542, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41546, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41547, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41548, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41791, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41801, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41868, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41879, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41881, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41886, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41887, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41916, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {41999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42128, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42129, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42130, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42131, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42132, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42133, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42134, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42135, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42136, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42137, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42138, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42139, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42140, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42141, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42142, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42143, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42144, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42145, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42146, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42147, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42148, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42149, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42150, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42151, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42152, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42153, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42154, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42155, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42156, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42157, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42158, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42159, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42160, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42161, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42162, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42163, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42164, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42165, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42166, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42167, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42168, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42169, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42170, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42171, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42172, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42173, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42174, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42175, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42176, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42177, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42178, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42179, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42180, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42181, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42182, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {42192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42232, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {42233, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {42234, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {42235, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {42236, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {42237, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {42238, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {42239, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {42240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42508, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {42509, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {42510, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {42511, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {42512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42519, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42528, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {42529, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {42530, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {42531, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {42532, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {42533, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {42534, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {42535, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {42536, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {42537, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {42538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42560, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42561, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42562, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42563, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42564, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42565, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42566, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42567, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42568, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42569, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42570, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42571, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42572, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42573, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42574, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42575, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42576, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42577, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42578, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42579, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42580, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42581, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42582, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42583, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42584, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42585, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42586, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42587, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42588, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42589, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42590, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42591, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42592, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42593, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42594, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42595, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42596, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42597, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42598, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42599, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42600, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42601, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42602, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42603, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42604, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42605, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42607, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42608, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {42609, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {42610, Unicode::Category_Mark_Enclosing, Unicode::Direction_Nonspacing_Mark}, + {42611, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {42612, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42613, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42614, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42615, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42616, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42617, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42618, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42619, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42620, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42621, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42622, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {42623, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42624, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42625, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42626, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42627, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42628, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42629, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42630, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42631, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42632, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42633, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42634, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42635, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42636, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42637, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42638, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42639, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42640, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42641, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42642, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42643, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42644, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42645, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42646, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42647, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42648, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42649, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42650, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42651, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42652, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {42653, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {42654, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42655, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42726, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {42727, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {42728, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {42729, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {42730, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {42731, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {42732, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {42733, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {42734, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {42735, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {42736, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42737, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {42738, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {42739, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {42740, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {42741, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {42742, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {42743, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {42752, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42753, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42754, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42755, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42756, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42757, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42758, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42759, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42760, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42761, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42762, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42763, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42764, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42765, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42766, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42767, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42768, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42769, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42770, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42771, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42772, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42773, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42774, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42775, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42776, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42777, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42778, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42779, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42780, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42781, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42782, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42783, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42784, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42785, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {42786, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42787, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42788, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42789, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42790, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42791, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42792, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42793, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42794, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42795, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42796, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42797, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42798, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42799, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42800, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42801, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42802, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42803, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42804, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42805, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42806, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42807, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42808, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42809, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42810, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42811, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42812, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42813, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42814, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42815, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42816, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42817, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42818, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42819, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42820, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42821, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42822, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42823, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42824, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42825, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42826, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42827, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42828, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42829, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42830, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42831, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42832, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42833, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42834, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42835, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42836, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42837, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42838, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42839, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42840, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42841, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42842, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42843, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42844, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42845, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42846, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42847, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42848, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42849, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42850, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42851, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42852, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42853, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42854, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42855, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42856, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42857, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42858, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42859, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42860, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42861, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42862, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42863, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42864, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {42865, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42866, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42867, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42868, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42869, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42870, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42871, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42872, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42873, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42874, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42875, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42876, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42877, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42878, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42879, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42880, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42881, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42882, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42883, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42884, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42885, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42886, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42887, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42888, Unicode::Category_Letter_Modifier, Unicode::Direction_Other_Neutral}, + {42889, Unicode::Category_Symbol_Modifier, Unicode::Direction_Left_To_Right}, + {42890, Unicode::Category_Symbol_Modifier, Unicode::Direction_Left_To_Right}, + {42891, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42892, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42893, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42894, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {42896, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42897, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42898, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42899, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42900, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42901, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42902, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42903, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42904, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42905, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42906, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42907, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42908, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42909, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42910, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42911, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42912, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42913, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42914, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42915, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42916, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42917, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42918, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42919, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42920, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42921, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42922, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42923, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42924, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42925, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42926, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42927, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42928, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42929, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42930, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42931, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42932, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42933, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42934, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42935, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42936, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {42937, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {42999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43000, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43001, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43002, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43010, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43014, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43019, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43043, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43044, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43045, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43046, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43047, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43048, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {43049, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {43050, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {43051, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {43056, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {43057, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {43058, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {43059, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {43060, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {43061, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {43062, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {43063, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {43064, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {43065, Unicode::Category_Symbol_Other, Unicode::Direction_European_Terminator}, + {43072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43124, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {43125, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {43126, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {43127, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {43136, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43137, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43139, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43140, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43141, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43142, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43143, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43144, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43145, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43146, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43147, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43148, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43149, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43150, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43151, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43152, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43153, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43154, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43155, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43156, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43157, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43158, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43188, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43189, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43190, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43191, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43192, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43193, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43194, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43195, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43196, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43197, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43198, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43199, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43200, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43201, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43202, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43203, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43204, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43205, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43214, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43215, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43216, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43217, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43218, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43219, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43220, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43221, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43222, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43223, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43224, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43225, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43232, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43233, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43234, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43235, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43236, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43237, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43238, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43239, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43240, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43241, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43242, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43243, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43244, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43245, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43246, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43247, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43248, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43249, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43256, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43257, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43258, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43260, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43263, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43264, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43265, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43266, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43267, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43268, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43269, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43270, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43271, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43272, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43273, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43302, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43303, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43304, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43305, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43306, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43307, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43308, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43309, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43310, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43311, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43335, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43336, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43337, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43338, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43339, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43340, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43341, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43342, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43343, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43344, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43345, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43346, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43347, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43359, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43392, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43393, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43394, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43395, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43443, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43444, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43445, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43446, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43447, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43448, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43449, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43450, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43451, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43452, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43453, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43454, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43455, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43456, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43457, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43458, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43459, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43460, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43461, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43462, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43463, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43464, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43465, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43466, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43467, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43468, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43469, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43471, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43472, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43473, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43474, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43475, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43476, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43477, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43478, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43479, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43480, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43481, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43486, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43487, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43493, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43494, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43504, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43505, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43506, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43507, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43508, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43509, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43510, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43511, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43512, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43513, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43530, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43531, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43532, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43533, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43534, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43535, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43540, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43541, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43542, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43546, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43547, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43548, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43561, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43562, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43563, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43564, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43565, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43566, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43567, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43568, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43569, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43570, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43571, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43572, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43573, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43574, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43587, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43596, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43597, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43600, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43601, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43602, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43603, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43604, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43605, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43606, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43607, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43608, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43609, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {43612, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43613, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43614, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43615, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43632, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43639, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {43640, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {43641, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {43642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43643, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43644, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43645, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43696, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43698, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43699, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43700, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43703, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43704, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43710, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43711, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43713, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43741, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43742, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43743, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43755, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43756, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43757, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43758, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43759, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43760, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43761, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {43762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43763, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43764, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43765, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {43766, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {43777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43824, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43825, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43826, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43827, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43828, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43829, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43830, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43831, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43832, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43833, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43834, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43835, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43836, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43837, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43838, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43839, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43840, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43841, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43842, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43843, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43844, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43845, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43846, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43847, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43848, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43849, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43850, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43851, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43852, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43853, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43854, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43855, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43856, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43857, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43858, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43859, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43860, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43861, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43862, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43863, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43864, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43865, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43866, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43867, Unicode::Category_Symbol_Modifier, Unicode::Direction_Left_To_Right}, + {43868, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43869, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43870, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43871, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {43872, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43873, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43874, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43875, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43876, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43877, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43888, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43889, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43890, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43891, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43892, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43893, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43894, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43895, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43896, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43897, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43898, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43899, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43900, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43901, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43902, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43903, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43904, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43905, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43906, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43907, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43908, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43909, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43910, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43911, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43912, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43913, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43914, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43915, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43916, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43917, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43918, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43919, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43920, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43921, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43922, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43923, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43924, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43925, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43926, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43927, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43928, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43929, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43930, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43931, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43932, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43933, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43934, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43935, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43936, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43937, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43938, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43939, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43940, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43941, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43942, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43943, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43944, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43945, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43946, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43947, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43948, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43949, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43950, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43951, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43952, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43953, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43954, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43955, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43956, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43957, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43958, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43959, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43960, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43961, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43962, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43963, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43964, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43965, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43966, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43967, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {43968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {43999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {44000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {44001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {44002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {44003, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {44004, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {44005, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {44006, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {44007, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {44008, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {44009, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {44010, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {44011, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {44012, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {44013, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {44016, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {44017, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {44018, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {44019, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {44020, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {44021, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {44022, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {44023, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {44024, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {44025, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {55216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {55291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63791, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63801, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63868, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63879, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63881, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63886, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63887, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63916, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {63999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64132, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64134, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64135, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64136, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64137, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64139, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64140, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64141, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64142, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64143, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64144, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64145, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64146, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64147, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64148, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64149, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64150, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64151, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64152, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64153, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64154, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64155, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64156, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64157, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64158, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {64256, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64257, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64258, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64259, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64260, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64261, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64262, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64275, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64276, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64277, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64278, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64279, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {64285, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64286, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {64287, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64288, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64289, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64290, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64291, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64292, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64293, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64294, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64295, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64296, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64297, Unicode::Category_Symbol_Math, Unicode::Direction_European_Separator}, + {64298, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64299, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64300, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64301, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64302, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64303, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64304, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64305, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64306, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64307, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64308, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64309, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64310, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64312, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64313, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64314, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64315, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64316, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64318, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64320, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64321, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64323, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64324, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64326, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64327, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64328, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64329, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64330, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64331, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64332, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64333, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64334, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64335, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {64336, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64337, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64338, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64339, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64340, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64341, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64342, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64343, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64344, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64345, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64346, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64347, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64348, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64349, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64350, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64351, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64352, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64353, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64354, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64355, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64356, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64357, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64358, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64359, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64360, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64361, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64362, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64363, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64364, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64365, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64366, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64367, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64368, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64369, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64370, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64371, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64372, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64373, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64374, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64375, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64376, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64377, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64378, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64379, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64380, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64381, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64382, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64383, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64384, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64385, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64386, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64387, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64388, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64389, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64390, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64391, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64392, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64393, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64394, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64395, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64396, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64397, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64398, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64399, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64400, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64401, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64402, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64403, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64404, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64405, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64406, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64407, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64408, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64409, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64410, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64411, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64412, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64413, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64414, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64415, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64416, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64417, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64418, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64419, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64420, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64421, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64422, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64423, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64424, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64425, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64426, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64427, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64428, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64429, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64430, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64431, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64432, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64433, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64434, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64435, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64436, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64437, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64438, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64439, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64440, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64441, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64442, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64443, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64444, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64445, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64446, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64447, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64448, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64449, Unicode::Category_Symbol_Modifier, Unicode::Direction_Arabic_Letter}, + {64467, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64468, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64469, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64470, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64471, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64472, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64473, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64474, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64475, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64476, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64477, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64478, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64479, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64480, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64481, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64482, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64483, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64484, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64485, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64486, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64487, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64488, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64489, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64490, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64491, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64492, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64493, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64494, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64495, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64496, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64497, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64498, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64499, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64500, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64501, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64502, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64503, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64504, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64505, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64506, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64507, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64508, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64509, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64510, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64511, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64512, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64513, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64514, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64515, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64516, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64517, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64518, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64519, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64520, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64521, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64522, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64523, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64524, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64525, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64526, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64527, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64528, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64529, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64530, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64531, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64532, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64533, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64534, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64535, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64536, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64537, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64538, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64539, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64540, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64541, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64542, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64543, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64544, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64545, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64546, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64547, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64548, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64549, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64550, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64551, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64552, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64553, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64554, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64555, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64556, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64557, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64558, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64559, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64560, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64561, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64562, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64563, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64564, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64565, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64566, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64567, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64568, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64569, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64570, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64571, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64572, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64573, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64574, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64575, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64576, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64577, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64578, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64579, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64580, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64581, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64582, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64583, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64584, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64585, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64586, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64587, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64588, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64589, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64590, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64591, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64592, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64593, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64594, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64595, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64596, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64597, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64598, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64599, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64600, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64601, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64602, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64603, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64604, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64605, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64606, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64607, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64608, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64609, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64610, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64611, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64612, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64613, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64614, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64615, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64616, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64617, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64618, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64619, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64620, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64621, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64622, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64623, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64624, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64625, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64626, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64627, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64628, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64629, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64630, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64631, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64632, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64633, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64634, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64635, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64636, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64637, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64638, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64639, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64640, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64641, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64642, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64643, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64644, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64645, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64646, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64647, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64648, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64649, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64650, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64651, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64652, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64653, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64654, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64655, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64656, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64657, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64658, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64659, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64660, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64661, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64662, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64663, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64664, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64665, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64666, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64667, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64668, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64669, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64670, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64671, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64672, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64673, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64674, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64675, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64676, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64677, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64678, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64679, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64680, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64681, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64682, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64683, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64684, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64685, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64686, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64687, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64688, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64689, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64690, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64691, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64692, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64693, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64694, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64695, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64696, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64697, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64698, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64699, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64700, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64701, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64702, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64703, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64704, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64705, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64706, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64707, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64708, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64709, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64710, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64711, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64712, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64713, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64714, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64715, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64716, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64717, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64718, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64719, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64720, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64721, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64722, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64723, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64724, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64725, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64726, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64727, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64728, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64729, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64730, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64731, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64732, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64733, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64734, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64735, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64736, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64737, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64738, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64739, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64740, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64741, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64742, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64743, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64744, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64745, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64746, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64747, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64748, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64749, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64750, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64751, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64752, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64753, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64754, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64755, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64756, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64757, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64758, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64759, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64760, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64761, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64762, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64763, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64764, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64765, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64766, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64767, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64768, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64769, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64770, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64771, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64772, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64773, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64774, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64775, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64776, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64777, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64778, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64779, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64780, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64781, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64782, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64783, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64784, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64785, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64786, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64787, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64788, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64789, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64790, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64791, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64792, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64793, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64794, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64795, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64796, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64797, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64798, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64799, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64800, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64801, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64802, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64803, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64804, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64805, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64806, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64807, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64808, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64809, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64810, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64811, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64812, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64813, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64814, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64815, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64816, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64817, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64818, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64819, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64820, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64821, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64822, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64823, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64824, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64825, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64826, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64827, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64828, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64829, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64830, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {64831, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {64848, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64849, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64850, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64851, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64852, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64853, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64854, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64855, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64856, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64857, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64858, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64859, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64860, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64861, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64862, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64863, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64864, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64865, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64866, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64867, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64868, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64869, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64870, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64871, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64872, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64873, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64874, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64875, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64876, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64877, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64878, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64879, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64880, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64881, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64882, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64883, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64884, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64885, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64886, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64887, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64888, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64889, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64890, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64891, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64892, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64893, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64894, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64895, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64896, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64897, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64898, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64899, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64900, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64901, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64902, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64903, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64904, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64905, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64906, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64907, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64908, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64909, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64910, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64911, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64914, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64915, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64916, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64917, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64918, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64919, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64920, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64921, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64922, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64923, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64924, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64925, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64926, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64927, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64928, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64929, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64930, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64931, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64932, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64933, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64934, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64935, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64936, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64937, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64938, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64939, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64940, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64941, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64942, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64943, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64944, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64945, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64946, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64947, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64948, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64949, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64950, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64951, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64952, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64953, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64954, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64955, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64956, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64957, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64958, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64959, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64960, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64961, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64962, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64963, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64964, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64965, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64966, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {64967, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65008, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65009, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65010, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65011, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65012, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65013, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65014, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65015, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65016, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65017, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65018, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65019, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65020, Unicode::Category_Symbol_Currency, Unicode::Direction_Arabic_Letter}, + {65021, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65024, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65025, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65026, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65027, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65028, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65029, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65030, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65031, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65032, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65033, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65034, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65035, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65036, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65037, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65038, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65039, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65040, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65041, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65042, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65043, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65044, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65045, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65046, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65047, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65048, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65049, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65056, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65057, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65058, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65059, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65060, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65061, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65062, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65063, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65064, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65065, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65066, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65067, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65068, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65069, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65070, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65071, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {65072, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65073, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {65074, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {65075, Unicode::Category_Punctuation_Connector, Unicode::Direction_Other_Neutral}, + {65076, Unicode::Category_Punctuation_Connector, Unicode::Direction_Other_Neutral}, + {65077, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65078, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65079, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65080, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65081, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65082, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65083, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65084, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65085, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65086, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65087, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65088, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65089, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65090, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65091, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65092, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65093, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65094, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65095, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65096, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65097, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65098, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65099, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65100, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65101, Unicode::Category_Punctuation_Connector, Unicode::Direction_Other_Neutral}, + {65102, Unicode::Category_Punctuation_Connector, Unicode::Direction_Other_Neutral}, + {65103, Unicode::Category_Punctuation_Connector, Unicode::Direction_Other_Neutral}, + {65104, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {65105, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65106, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {65108, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65109, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {65110, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65111, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65112, Unicode::Category_Punctuation_Dash, Unicode::Direction_Other_Neutral}, + {65113, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65114, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65115, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65116, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65117, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65118, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65119, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {65120, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65121, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65122, Unicode::Category_Symbol_Math, Unicode::Direction_European_Separator}, + {65123, Unicode::Category_Punctuation_Dash, Unicode::Direction_European_Separator}, + {65124, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65125, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65126, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65128, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65129, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {65130, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {65131, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65136, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65137, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65138, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65139, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65140, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65142, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65143, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65144, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65145, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65146, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65147, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65148, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65149, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65150, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65151, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65152, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65153, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65154, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65155, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65156, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65157, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65158, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65159, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65160, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65161, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65162, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65163, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65164, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65165, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65166, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65167, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65168, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65169, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65170, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65171, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65172, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65173, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65174, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65175, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65176, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65177, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65178, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65179, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65180, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65181, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65182, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65183, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65184, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65185, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65186, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65187, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65188, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65189, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65190, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65191, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65192, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65193, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65194, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65195, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65196, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65197, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65198, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65199, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65200, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65201, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65202, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65203, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65204, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65205, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65206, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65207, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65208, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65209, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65210, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65211, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65212, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65213, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65214, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65215, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65216, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65217, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65218, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65219, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65220, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65221, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65222, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65223, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65224, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65225, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65226, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65227, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65228, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65229, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65230, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65231, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65232, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65233, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65234, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65235, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65236, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65237, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65238, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65239, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65240, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65241, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65242, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65243, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65244, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65245, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65246, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65247, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65248, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65249, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65250, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65251, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65252, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65253, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65254, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65255, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65256, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65257, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65258, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65259, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65260, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65261, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65262, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65263, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65264, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65265, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65266, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65267, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65268, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65269, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65270, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65271, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65272, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65273, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65274, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65275, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65276, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {65279, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {65281, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65282, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65283, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {65284, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {65285, Unicode::Category_Punctuation_Other, Unicode::Direction_European_Terminator}, + {65286, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65287, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65288, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65289, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65290, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65291, Unicode::Category_Symbol_Math, Unicode::Direction_European_Separator}, + {65292, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {65293, Unicode::Category_Punctuation_Dash, Unicode::Direction_European_Separator}, + {65294, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {65295, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {65296, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {65297, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {65298, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {65299, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {65300, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {65301, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {65302, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {65303, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {65304, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {65305, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {65306, Unicode::Category_Punctuation_Other, Unicode::Direction_Common_Separator}, + {65307, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65308, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65309, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65310, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65311, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65312, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65313, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65314, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65315, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65316, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65317, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65318, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65319, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65320, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65321, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65322, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65323, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65324, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65325, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65326, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65327, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65328, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65329, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65330, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65331, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65332, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65333, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65334, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65335, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65336, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65337, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65338, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {65339, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65340, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65341, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65342, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {65343, Unicode::Category_Punctuation_Connector, Unicode::Direction_Other_Neutral}, + {65344, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {65345, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65346, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65347, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65348, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65349, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65350, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65351, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65352, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65353, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65354, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65355, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65356, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65357, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65358, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65359, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65360, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65361, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65362, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65363, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65364, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65365, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65366, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65367, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65368, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65369, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65370, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {65371, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65372, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65373, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65374, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65375, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65376, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65377, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65378, Unicode::Category_Punctuation_Open, Unicode::Direction_Other_Neutral}, + {65379, Unicode::Category_Punctuation_Close, Unicode::Direction_Other_Neutral}, + {65380, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65381, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65392, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {65393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65438, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {65439, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {65440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65504, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {65505, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {65506, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65507, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {65508, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65509, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {65510, Unicode::Category_Symbol_Currency, Unicode::Direction_European_Terminator}, + {65512, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65513, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65514, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65515, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65516, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {65517, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65518, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65529, Unicode::Category_Other_Format, Unicode::Direction_Other_Neutral}, + {65530, Unicode::Category_Other_Format, Unicode::Direction_Other_Neutral}, + {65531, Unicode::Category_Other_Format, Unicode::Direction_Other_Neutral}, + {65532, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65533, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65540, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65541, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65542, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65546, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65547, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {65792, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {65793, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {65794, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {65799, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65800, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65801, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65802, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65803, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65804, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65805, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65806, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65807, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65808, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65809, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65810, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65811, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65812, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65813, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65814, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65815, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65816, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65817, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65818, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65819, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65820, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65821, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65822, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65823, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65824, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65825, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65826, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65827, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65828, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65829, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65830, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65831, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65832, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65833, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65834, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65835, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65836, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65837, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65838, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65839, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65840, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65841, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65842, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65843, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {65847, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65848, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65849, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65850, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65851, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65852, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65853, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65854, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65855, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65856, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65857, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65858, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65859, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65860, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65861, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65862, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65863, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65864, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65865, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65866, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65867, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65868, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65869, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65870, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65871, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65872, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65873, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65874, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65875, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65876, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65877, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65878, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65879, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65880, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65881, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65882, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65883, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65884, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65885, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65886, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65887, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65888, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65889, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65890, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65891, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65892, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65893, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65894, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65895, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65896, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65897, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65898, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65899, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65900, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65901, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65902, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65903, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65904, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65905, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65906, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65907, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65908, Unicode::Category_Number_Letter, Unicode::Direction_Other_Neutral}, + {65909, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {65910, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {65911, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {65912, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {65913, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65914, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65915, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65916, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65917, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65918, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65919, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65920, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65921, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65922, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65923, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65924, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65925, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65926, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65927, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65928, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65929, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65930, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {65931, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {65932, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65933, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65934, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {65936, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65937, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65938, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65939, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65940, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65941, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65942, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65943, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65944, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65945, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65946, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65947, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {65952, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {66000, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66001, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66002, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66003, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66004, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66005, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66006, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66007, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66008, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66009, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66010, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66011, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66012, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66013, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66014, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66015, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66016, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66017, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66018, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66019, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66020, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66021, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66022, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66023, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66024, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66025, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66026, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66027, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66028, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66029, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66030, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66031, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66032, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66033, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66034, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66035, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66036, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66037, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66038, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66039, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66040, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66041, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66042, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66043, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66044, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {66045, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {66176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66272, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {66273, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66274, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66275, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66276, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66277, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66278, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66279, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66280, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66281, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66282, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66283, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66284, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66285, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66286, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66287, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66288, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66289, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66290, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66291, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66292, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66293, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66294, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66295, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66296, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66297, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66298, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66299, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {66304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66336, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {66337, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {66338, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {66339, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {66349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66369, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {66370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66378, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {66384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66422, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {66423, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {66424, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {66425, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {66426, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {66432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66463, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {66464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66512, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {66513, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {66514, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {66515, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {66516, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {66517, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {66560, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66561, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66562, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66563, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66564, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66565, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66566, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66567, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66568, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66569, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66570, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66571, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66572, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66573, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66574, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66575, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66576, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66577, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66578, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66579, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66580, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66581, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66582, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66583, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66584, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66585, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66586, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66587, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66588, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66589, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66590, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66591, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66592, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66593, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66594, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66595, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66596, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66597, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66598, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66599, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66600, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66601, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66602, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66603, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66604, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66605, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66606, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66607, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66608, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66609, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66610, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66611, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66612, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66613, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66614, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66615, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66616, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66617, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66618, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66619, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66620, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66621, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66622, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66623, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66624, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66625, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66626, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66627, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66628, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66629, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66630, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66631, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66632, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66633, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66634, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66635, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66636, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66637, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66638, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66639, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66720, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {66721, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {66722, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {66723, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {66724, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {66725, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {66726, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {66727, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {66728, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {66729, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {66736, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66737, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66738, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66739, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66740, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66741, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66742, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66743, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66744, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66745, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66746, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66747, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66748, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66749, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66750, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66751, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66752, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66753, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66754, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66755, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66756, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66757, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66758, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66759, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66760, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66761, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66762, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66763, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66764, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66765, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66766, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66767, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66768, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66769, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66770, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66771, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {66776, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66777, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66778, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66779, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66780, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66781, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66782, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66783, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66784, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66785, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66786, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66787, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66788, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66789, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66790, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66791, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66792, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66793, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66794, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66795, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66796, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66797, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66798, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66799, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66800, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66801, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66802, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66803, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66804, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66805, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66806, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66807, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66808, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66809, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66810, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66811, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {66816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66868, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66879, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66881, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66886, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66887, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {66927, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {67072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67132, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67134, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67135, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67136, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67137, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67139, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67140, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67141, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67142, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67143, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67144, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67145, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67146, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67147, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67148, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67149, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67150, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67151, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67152, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67153, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67154, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67155, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67156, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67157, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67158, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {67584, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67585, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67586, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67587, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67588, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67589, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67592, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67594, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67595, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67596, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67597, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67598, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67599, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67600, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67601, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67602, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67603, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67604, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67605, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67606, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67607, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67608, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67609, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67610, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67611, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67612, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67613, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67614, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67615, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67616, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67617, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67618, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67619, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67620, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67621, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67622, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67623, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67624, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67625, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67626, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67627, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67628, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67629, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67630, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67631, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67632, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67633, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67634, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67635, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67636, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67637, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67639, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67640, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67644, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67647, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67648, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67649, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67650, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67651, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67652, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67653, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67654, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67655, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67656, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67657, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67658, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67659, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67660, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67661, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67662, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67663, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67664, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67665, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67666, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67667, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67668, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67669, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67671, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {67672, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67673, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67674, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67675, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67676, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67677, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67678, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67679, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67680, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67681, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67682, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67683, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67684, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67685, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67686, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67687, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67688, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67689, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67690, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67691, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67692, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67693, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67694, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67695, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67696, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67697, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67698, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67699, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67700, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67701, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67702, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67703, Unicode::Category_Symbol_Other, Unicode::Direction_Right_To_Left}, + {67704, Unicode::Category_Symbol_Other, Unicode::Direction_Right_To_Left}, + {67705, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67706, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67707, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67708, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67709, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67710, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67711, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67712, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67713, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67714, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67715, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67716, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67717, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67718, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67719, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67720, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67721, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67722, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67723, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67724, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67725, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67726, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67727, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67728, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67729, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67730, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67731, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67732, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67733, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67734, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67735, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67736, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67737, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67738, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67739, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67740, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67741, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67742, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67751, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67752, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67753, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67754, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67755, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67756, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67757, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67758, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67759, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67808, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67809, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67810, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67811, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67812, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67813, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67814, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67815, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67816, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67817, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67818, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67819, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67820, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67821, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67822, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67823, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67824, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67825, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67826, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67828, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67829, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67835, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67836, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67837, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67838, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67839, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67840, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67841, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67842, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67843, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67844, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67845, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67846, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67847, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67848, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67849, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67850, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67851, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67852, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67853, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67854, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67855, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67856, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67857, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67858, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67859, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67860, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67861, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67862, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67863, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67864, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67865, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67866, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67867, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {67871, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {67872, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67873, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67874, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67875, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67876, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67877, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67878, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67879, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67880, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67881, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67882, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67883, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67884, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67885, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67886, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67887, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67888, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67889, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67890, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67891, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67892, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67893, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67894, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67895, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67896, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67897, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67903, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {67968, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67969, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67970, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67971, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67972, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67973, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67974, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67975, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67976, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67977, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67978, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67979, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67980, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67981, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67982, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67983, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67984, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67985, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67986, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67987, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67988, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67989, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67990, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67991, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67992, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67993, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67994, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67995, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67996, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67997, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67998, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {67999, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68000, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68001, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68002, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68003, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68004, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68005, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68006, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68007, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68008, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68009, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68010, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68011, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68012, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68013, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68014, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68015, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68016, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68017, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68018, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68019, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68020, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68021, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68022, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68023, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68028, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68029, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68030, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68031, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68032, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68033, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68034, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68035, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68036, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68037, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68038, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68039, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68040, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68041, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68042, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68043, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68044, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68045, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68046, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68047, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68050, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68051, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68052, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68053, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68054, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68055, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68056, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68057, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68058, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68059, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68060, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68061, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68062, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68063, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68064, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68065, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68066, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68067, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68068, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68069, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68070, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68071, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68072, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68073, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68074, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68075, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68076, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68077, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68078, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68079, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68080, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68081, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68082, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68083, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68084, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68085, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68086, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68087, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68088, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68089, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68090, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68091, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68092, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68093, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68094, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68095, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68096, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68097, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68098, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68099, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68101, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68102, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68108, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68109, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68110, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68111, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68112, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68113, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68114, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68115, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68117, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68118, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68119, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68121, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68122, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68123, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68124, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68125, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68126, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68127, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68128, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68129, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68130, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68131, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68132, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68133, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68134, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68135, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68136, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68137, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68138, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68139, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68140, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68141, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68142, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68143, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68144, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68145, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68146, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68147, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68148, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68149, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68152, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68153, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68154, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68159, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68160, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68161, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68162, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68163, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68164, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68165, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68166, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68167, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68168, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68176, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68177, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68178, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68179, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68180, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68181, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68182, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68183, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68184, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68192, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68193, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68194, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68195, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68196, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68197, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68198, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68199, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68200, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68201, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68202, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68203, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68204, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68205, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68206, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68207, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68208, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68209, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68210, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68211, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68212, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68213, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68214, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68215, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68216, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68217, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68218, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68219, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68220, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68221, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68222, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68223, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68224, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68225, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68226, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68227, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68228, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68229, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68230, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68231, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68232, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68233, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68234, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68235, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68236, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68237, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68238, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68239, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68240, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68241, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68242, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68243, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68244, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68245, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68246, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68247, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68248, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68249, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68250, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68251, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68252, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68253, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68254, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68255, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68288, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68289, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68290, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68291, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68292, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68293, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68294, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68295, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68296, Unicode::Category_Symbol_Other, Unicode::Direction_Right_To_Left}, + {68297, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68298, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68299, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68300, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68301, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68302, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68303, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68304, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68305, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68306, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68307, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68308, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68309, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68310, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68311, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68312, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68313, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68314, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68315, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68316, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68317, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68318, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68319, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68320, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68321, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68322, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68323, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68324, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68325, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68326, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68331, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68332, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68333, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68334, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68335, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68336, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68337, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68338, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68339, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68340, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68341, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68342, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68352, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68353, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68354, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68355, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68356, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68357, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68358, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68359, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68360, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68361, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68362, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68363, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68364, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68365, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68366, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68367, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68368, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68369, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68370, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68371, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68372, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68373, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68374, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68375, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68376, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68377, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68378, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68379, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68380, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68381, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68382, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68383, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68384, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68385, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68386, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68387, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68388, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68389, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68390, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68391, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68392, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68393, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68394, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68395, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68396, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68397, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68398, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68399, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68400, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68401, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68402, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68403, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68404, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68405, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68409, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {68410, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {68411, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {68412, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {68413, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {68414, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {68415, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {68416, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68417, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68418, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68419, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68420, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68421, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68422, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68423, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68424, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68425, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68426, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68427, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68428, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68429, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68430, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68431, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68432, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68433, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68434, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68435, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68436, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68437, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68440, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68441, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68442, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68443, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68444, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68445, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68446, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68447, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68448, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68449, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68450, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68451, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68452, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68453, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68454, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68455, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68456, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68457, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68458, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68459, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68460, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68461, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68462, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68463, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68464, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68465, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68466, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68472, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68473, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68474, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68475, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68476, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68477, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68478, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68479, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68480, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68481, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68482, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68483, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68484, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68485, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68486, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68487, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68488, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68489, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68490, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68491, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68492, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68493, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68494, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68495, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68496, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68497, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68505, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68506, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68507, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68508, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {68521, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68522, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68523, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68524, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68525, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68526, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68527, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68608, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68609, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68610, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68611, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68612, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68613, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68614, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68615, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68616, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68617, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68618, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68619, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68620, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68621, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68622, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68623, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68624, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68625, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68626, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68627, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68628, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68629, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68630, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68631, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68632, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68633, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68634, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68635, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68636, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68637, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68638, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68639, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68640, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68641, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68642, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68643, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68644, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68645, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68646, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68647, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68648, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68649, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68650, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68651, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68652, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68653, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68654, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68655, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68656, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68657, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68658, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68659, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68660, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68661, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68662, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68663, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68664, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68665, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68666, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68667, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68668, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68669, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68670, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68671, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68672, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68673, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68674, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68675, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68676, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68677, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68678, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68679, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68680, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {68736, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68737, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68738, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68739, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68740, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68741, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68742, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68743, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68744, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68745, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68746, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68747, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68748, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68749, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68750, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68751, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68752, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68753, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68754, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68755, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68756, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68757, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68758, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68759, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68760, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68761, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68762, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68763, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68764, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68765, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68766, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68767, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68768, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68769, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68770, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68771, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68772, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68773, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68774, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68775, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68776, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68777, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68778, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68779, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68780, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68781, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68782, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68783, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68784, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68785, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68786, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {68800, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68801, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68802, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68803, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68804, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68805, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68806, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68807, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68808, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68809, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68810, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68811, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68812, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68813, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68814, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68815, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68816, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68817, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68818, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68819, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68820, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68821, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68822, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68823, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68824, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68825, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68826, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68827, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68828, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68829, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68830, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68831, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68832, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68833, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68834, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68835, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68836, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68837, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68838, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68839, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68840, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68841, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68842, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68843, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68844, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68845, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68846, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68847, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68848, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68849, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68850, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {68858, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68859, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68860, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68861, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68862, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68863, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {68864, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68865, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68866, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68867, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68868, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68869, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68870, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68871, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68872, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68873, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68874, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68875, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68876, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68877, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68878, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68879, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68880, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68881, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68882, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68883, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68884, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68885, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68886, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68887, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68888, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68889, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68890, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68891, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68892, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68893, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68894, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68895, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68896, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68897, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68898, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68899, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {68900, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68901, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68902, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68903, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {68912, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {68913, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {68914, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {68915, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {68916, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {68917, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {68918, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {68919, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {68920, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {68921, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Arabic_Number}, + {69216, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69217, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69218, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69219, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69220, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69221, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69222, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69223, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69224, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69225, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69226, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69227, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69228, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69229, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69230, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69231, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69232, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69233, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69234, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69235, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69236, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69237, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69238, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69239, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69240, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69241, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69242, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69243, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69244, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69245, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69246, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Number}, + {69376, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69377, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69378, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69379, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69380, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69381, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69382, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69383, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69384, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69385, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69386, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69387, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69388, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69389, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69390, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69391, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69392, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69393, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69394, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69395, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69396, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69397, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69398, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69399, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69400, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69401, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69402, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69403, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69404, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69405, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {69406, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {69407, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {69408, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {69409, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {69410, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {69411, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {69412, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {69413, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {69414, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {69415, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {69424, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69425, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69426, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69427, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69428, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69429, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69430, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69431, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69432, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69433, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69434, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69435, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69436, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69437, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69438, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69439, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69440, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69441, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69442, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69443, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69444, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69445, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {69446, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69447, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69448, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69449, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69450, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69451, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69452, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69453, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69454, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69455, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69456, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69457, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {69458, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {69459, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {69460, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {69461, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {69462, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {69463, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {69464, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {69465, Unicode::Category_Punctuation_Other, Unicode::Direction_Arabic_Letter}, + {69632, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69633, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69634, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69688, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69689, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69690, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69691, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69692, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69693, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69694, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69695, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69696, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69697, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69698, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69699, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69700, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69701, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69702, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69703, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69704, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69705, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69706, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69707, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69708, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69709, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69714, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69715, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69716, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69717, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69718, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69719, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69720, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69721, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69722, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69723, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69724, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69725, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69726, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69727, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69728, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69729, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69730, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69731, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69732, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69733, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {69734, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69735, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69736, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69737, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69738, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69739, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69740, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69741, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69742, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69743, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69759, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69760, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69761, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69762, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69791, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69801, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69808, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69809, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69810, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69811, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69812, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69813, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69814, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69815, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69816, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69817, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69818, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69819, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69820, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69821, Unicode::Category_Other_Format, Unicode::Direction_Left_To_Right}, + {69822, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69823, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69824, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69825, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69837, Unicode::Category_Other_Format, Unicode::Direction_Left_To_Right}, + {69840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69872, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69873, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69874, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69875, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69876, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69877, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69878, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69879, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69880, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69881, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69888, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69889, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69890, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69916, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69927, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69928, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69929, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69930, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69931, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69932, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69933, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69934, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69935, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69936, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69937, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69938, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69939, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69940, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {69942, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69943, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69944, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69945, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69946, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69947, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69948, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69949, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69950, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69951, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {69952, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69953, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69954, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69955, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {69956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69957, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69958, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {69968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {69999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70003, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70004, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70005, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70016, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70017, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70018, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70067, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70068, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70069, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70070, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70071, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70072, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70073, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70074, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70075, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70076, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70077, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70078, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70079, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70080, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70085, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70086, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70087, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70088, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70089, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70090, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70091, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70092, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70093, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70096, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70097, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70098, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70099, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70100, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70101, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70102, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70103, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70104, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70105, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70107, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70109, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70110, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70111, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70113, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70114, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70115, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70116, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70117, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70118, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70119, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70120, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70121, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70122, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70123, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70124, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70125, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70126, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70127, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70128, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70129, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70130, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70131, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70132, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {70144, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70145, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70146, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70147, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70148, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70149, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70150, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70151, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70152, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70153, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70154, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70155, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70156, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70157, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70158, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70188, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70189, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70190, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70191, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70192, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70193, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70194, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70195, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70196, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70197, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70198, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70199, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70200, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70201, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70202, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70203, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70204, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70205, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70206, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70313, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70367, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70368, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70369, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70370, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70371, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70372, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70373, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70374, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70375, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70376, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70377, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70378, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70384, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70385, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70386, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70387, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70388, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70389, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70390, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70391, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70392, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70393, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70400, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70401, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70402, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70403, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70459, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70460, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70462, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70463, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70464, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70465, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70466, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70467, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70468, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70471, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70472, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70475, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70476, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70477, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70487, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70498, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70499, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70502, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70503, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70504, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70505, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70506, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70507, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70508, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70512, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70513, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70514, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70515, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70516, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70709, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70710, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70711, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70712, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70713, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70714, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70715, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70716, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70717, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70718, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70719, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70720, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70721, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70722, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70723, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70724, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70725, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70726, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70731, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70732, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70733, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70734, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70735, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70736, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70737, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70738, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70739, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70740, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70741, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70742, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70743, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70744, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70745, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70747, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70749, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70750, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70791, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70801, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70832, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70833, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70834, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70835, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70836, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70837, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70838, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70839, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70840, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70841, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70842, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70843, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70844, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70845, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70846, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70847, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70848, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70849, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {70850, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70851, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {70852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70854, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {70855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {70864, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70865, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70866, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70867, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70868, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70869, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70870, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70871, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70872, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {70873, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71087, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71088, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71089, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71090, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71091, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71092, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71093, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71096, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71097, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71098, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71099, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71100, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71101, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71102, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71103, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71104, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71105, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71106, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71107, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71108, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71109, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71110, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71111, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71112, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71113, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71114, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71115, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71116, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71117, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71118, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71119, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71120, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71121, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71122, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71123, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71124, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71125, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71126, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71127, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71132, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71133, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71216, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71217, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71218, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71219, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71220, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71221, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71222, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71223, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71224, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71225, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71226, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71227, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71228, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71229, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71230, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71231, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71232, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71233, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71234, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71235, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71248, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71249, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71250, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71251, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71252, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71253, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71254, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71255, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71256, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71257, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71264, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71265, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71266, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71267, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71268, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71269, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71270, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71271, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71272, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71273, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71274, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71275, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71276, Unicode::Category_Punctuation_Other, Unicode::Direction_Other_Neutral}, + {71296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71339, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71340, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71341, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71342, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71343, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71344, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71345, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71346, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71347, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71348, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71349, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71350, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71351, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71360, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71361, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71362, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71363, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71364, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71365, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71366, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71367, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71368, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71369, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71453, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71454, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71455, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71456, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71457, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71458, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71459, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71460, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71461, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71462, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71463, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71464, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71465, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71466, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71467, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71472, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71473, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71474, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71475, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71476, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71477, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71478, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71479, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71480, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71481, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71482, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71483, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71484, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71485, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71486, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71487, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {71680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {71724, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71725, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71726, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71727, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71728, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71729, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71730, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71731, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71732, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71733, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71734, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71735, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71736, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {71737, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71738, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {71739, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {71840, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71841, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71842, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71843, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71844, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71845, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71846, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71847, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71848, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71849, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71850, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71851, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71852, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71853, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71854, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71855, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71856, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71857, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71858, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71859, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71860, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71861, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71862, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71863, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71864, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71865, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71866, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71867, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71868, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71869, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71870, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71871, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {71872, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71873, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71874, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71875, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71876, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71877, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71878, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71879, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71880, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71881, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71882, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71883, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71884, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71885, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71886, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71887, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71888, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71889, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71890, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71891, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71892, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71893, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71894, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71895, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71896, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71897, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71898, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71899, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71900, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71901, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71902, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71903, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {71904, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71905, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71906, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71907, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71908, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71909, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71910, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71911, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71912, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71913, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {71914, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71915, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71916, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71917, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71918, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71919, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71920, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71921, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71922, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {71935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72193, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72194, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72195, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72196, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72197, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72198, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72199, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Left_To_Right}, + {72200, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Left_To_Right}, + {72201, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72202, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72243, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72244, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72245, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72246, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72247, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72248, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72249, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {72250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72251, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72252, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72253, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72254, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72255, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72256, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72257, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72258, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72259, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72260, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72261, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72262, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72263, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72273, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72274, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72275, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72276, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72277, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72278, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72279, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {72280, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {72281, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72282, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72283, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72330, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72331, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72332, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72333, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72334, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72335, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72336, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72337, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72338, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72339, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72340, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72341, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72342, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72343, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {72344, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72345, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72346, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72347, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72348, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72350, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72351, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72352, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72353, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72354, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72751, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {72752, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72753, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72754, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72755, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72756, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72757, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72758, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72760, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72761, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72762, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72763, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72764, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72765, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72766, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {72767, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Left_To_Right}, + {72768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72769, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72770, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72771, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72772, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72773, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72784, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {72785, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {72786, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {72787, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {72788, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {72789, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {72790, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {72791, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {72792, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {72793, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {72794, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72795, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72796, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72797, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72798, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72799, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72800, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72801, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72802, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72803, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72804, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72805, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72806, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72807, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72808, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72809, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72810, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72811, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72812, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {72816, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72817, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {72818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72850, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72851, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72852, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72853, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72854, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72855, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72856, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72857, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72858, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72859, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72860, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72861, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72862, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72863, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72864, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72865, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72866, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72867, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72868, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72869, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72870, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72871, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72873, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {72874, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72875, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72876, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72877, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72878, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72879, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72880, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72881, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {72882, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72883, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72884, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {72885, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72886, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {72960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {72999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73009, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73010, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73011, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73012, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73013, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73014, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73018, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73020, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73021, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73023, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73024, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73025, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73026, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73027, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73028, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73029, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73031, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73040, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73041, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73042, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73043, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73044, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73045, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73046, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73047, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73048, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73049, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73098, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {73099, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {73100, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {73101, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {73102, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {73104, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73105, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73107, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {73108, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {73109, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73110, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {73111, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73120, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73121, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73122, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73123, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73124, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73125, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73126, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73127, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73128, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73129, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {73440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73459, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73460, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {73461, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {73462, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {73463, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {73464, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {73728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73791, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73801, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73868, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73879, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73881, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73886, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73887, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73916, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {73999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74132, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74134, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74135, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74136, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74137, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74139, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74140, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74141, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74142, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74143, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74144, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74145, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74146, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74147, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74148, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74149, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74150, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74151, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74152, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74153, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74154, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74155, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74156, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74157, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74158, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74519, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74530, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74531, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74532, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74533, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74534, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74535, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74540, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74541, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74542, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74546, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74547, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74548, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74752, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74753, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74754, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74755, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74756, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74757, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74758, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74759, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74760, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74761, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74762, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74763, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74764, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74765, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74766, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74767, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74768, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74769, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74770, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74771, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74772, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74773, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74774, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74775, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74776, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74777, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74778, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74779, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74780, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74781, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74782, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74783, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74784, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74785, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74786, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74787, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74788, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74789, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74790, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74791, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74792, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74793, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74794, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74795, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74796, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74797, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74798, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74799, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74800, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74801, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74802, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74803, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74804, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74805, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74806, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74807, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74808, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74809, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74810, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74811, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74812, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74813, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74814, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74815, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74816, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74817, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74818, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74819, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74820, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74821, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74822, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74823, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74824, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74825, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74826, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74827, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74828, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74829, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74830, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74831, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74832, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74833, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74834, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74835, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74836, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74837, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74838, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74839, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74840, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74841, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74842, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74843, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74844, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74845, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74846, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74847, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74848, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74849, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74850, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74851, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74852, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74853, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74854, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74855, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74856, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74857, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74858, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74859, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74860, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74861, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74862, Unicode::Category_Number_Letter, Unicode::Direction_Left_To_Right}, + {74864, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {74865, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {74866, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {74867, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {74868, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {74880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74881, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74886, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74887, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74916, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {74999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {75075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77868, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77879, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77881, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77886, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77887, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77916, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {77999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78132, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78134, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78135, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78136, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78137, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78139, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78140, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78141, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78142, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78143, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78144, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78145, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78146, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78147, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78148, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78149, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78150, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78151, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78152, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78153, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78154, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78155, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78156, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78157, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78158, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78519, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78530, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78531, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78532, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78533, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78534, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78535, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78540, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78541, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78542, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78546, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78547, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78548, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78791, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78801, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78868, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78879, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78881, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78886, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78887, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {78894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {82999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83132, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83134, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83135, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83136, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83137, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83139, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83140, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83141, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83142, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83143, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83144, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83145, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83146, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83147, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83148, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83149, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83150, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83151, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83152, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83153, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83154, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83155, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83156, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83157, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83158, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83519, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {83526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92519, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92530, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92531, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92532, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92533, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92534, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92535, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92540, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92541, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92542, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92546, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92547, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92548, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92768, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {92769, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {92770, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {92771, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {92772, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {92773, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {92774, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {92775, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {92776, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {92777, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {92782, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {92783, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {92880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92881, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92886, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92887, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92912, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92913, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92914, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92915, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92916, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92917, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {92928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {92976, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92977, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92978, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92979, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92980, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92981, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92982, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {92983, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {92984, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {92985, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {92986, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {92987, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {92988, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {92989, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {92990, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {92991, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {92992, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {92993, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {92994, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {92995, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {92996, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {92997, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {93008, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {93009, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {93010, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {93011, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {93012, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {93013, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {93014, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {93015, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {93016, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {93017, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Left_To_Right}, + {93019, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93020, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93021, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93022, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93023, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93024, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93025, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93760, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93761, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93762, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93763, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93764, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93765, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93766, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93767, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93768, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93769, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93770, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93771, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93772, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93773, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93774, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93775, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93776, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93777, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93778, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93779, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93780, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93781, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93782, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93783, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93784, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93785, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93786, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93787, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93788, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93789, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93790, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93791, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {93792, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93793, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93794, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93795, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93796, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93797, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93798, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93799, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93800, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93801, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93802, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93803, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93804, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93805, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93806, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93807, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93808, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93809, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93810, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93811, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93812, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93813, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93814, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93815, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93816, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93817, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93818, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93819, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93820, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93821, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93822, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93823, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {93824, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93825, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93826, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93827, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93828, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93829, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93830, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93831, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93832, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93833, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93834, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93835, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93836, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93837, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93838, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93839, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93840, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93841, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93842, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93843, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93844, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93845, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93846, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {93847, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {93848, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {93849, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {93850, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {93952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {93999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {94033, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94034, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94035, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94036, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94037, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94038, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94039, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94040, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94041, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94042, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94043, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94044, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94045, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94046, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94047, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94048, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94049, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94050, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94051, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94052, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94053, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94054, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94055, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94056, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94057, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94058, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94059, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94060, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94061, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94062, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94063, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94064, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94065, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94066, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94067, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94068, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94069, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94070, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94071, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94072, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94073, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94074, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94075, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94076, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94077, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94078, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {94095, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {94096, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {94097, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {94098, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {94099, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94100, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94101, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94102, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94103, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94104, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94105, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94106, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94107, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94108, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94109, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94110, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94111, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94176, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {94177, Unicode::Category_Letter_Modifier, Unicode::Direction_Left_To_Right}, + {100352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100356, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100357, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100358, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100359, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100360, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100361, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100362, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100363, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100364, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100365, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100366, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100367, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100368, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100369, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100370, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100371, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100372, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100373, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100374, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100375, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100376, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100377, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100378, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100379, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100380, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100381, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100382, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100383, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100384, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100385, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100386, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100387, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100388, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100389, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100390, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100391, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100392, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100393, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100394, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100395, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100396, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100397, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100398, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100399, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100400, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100401, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100402, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100403, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100404, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100405, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100406, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100407, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100408, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100409, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100410, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100411, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100412, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100413, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100414, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100415, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100416, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100417, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100418, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100419, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100420, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100421, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100422, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100423, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100424, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100425, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100426, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100427, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100428, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100429, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100430, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100431, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100432, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100433, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100434, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100435, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100436, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100437, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100438, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100439, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100440, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100441, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100442, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100443, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100444, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100445, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100446, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100447, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100448, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100449, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100450, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100451, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100452, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100453, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100454, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100455, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100456, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100457, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100458, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100459, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100460, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100461, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100462, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100463, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100464, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100465, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100466, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100467, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100468, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100469, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100470, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100471, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100472, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100473, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100474, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100475, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100476, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100477, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100478, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100479, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100480, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100481, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100482, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100483, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100484, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100485, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100486, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100487, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100488, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100489, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100490, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100491, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100492, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100493, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100494, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100495, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100496, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100497, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100498, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100499, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100500, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100501, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100502, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100503, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100504, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100505, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100506, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100507, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100508, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100509, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100510, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100511, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100512, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100513, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100514, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100515, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100516, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100517, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100518, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100519, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100520, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100521, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100522, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100523, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100524, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100525, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100526, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100527, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100528, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100529, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100530, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100531, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100532, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100533, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100534, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100535, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100536, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100537, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100538, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100539, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100540, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100541, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100542, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100543, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100544, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100545, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100546, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100547, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100548, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100549, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100550, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100551, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100552, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100553, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100554, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100555, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100556, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100557, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100558, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100559, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100791, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100801, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100868, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100879, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100881, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100886, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100887, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100916, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {100999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {101106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110791, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110801, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110868, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {110999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111102, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111103, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111104, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111105, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111106, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111107, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111108, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111109, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111110, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111111, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111112, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111113, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111114, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111115, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111116, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111117, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111118, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111119, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111120, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111121, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111122, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111123, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111124, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111125, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111126, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111127, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111128, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111129, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111130, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111131, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111132, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111133, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111134, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111135, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111136, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111137, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111138, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111139, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111140, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111141, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111142, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111143, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111144, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111145, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111146, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111147, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111148, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111149, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111150, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111151, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111152, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111153, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111154, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111155, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111156, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111157, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111158, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111159, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111160, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111161, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111162, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111163, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111164, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111165, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111166, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111167, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111168, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111169, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111170, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111171, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111172, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111173, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111174, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111175, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111176, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111177, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111178, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111179, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111180, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111181, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111182, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111183, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111184, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111185, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111186, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111187, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111188, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111189, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111190, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111191, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111192, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111193, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111194, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111195, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111196, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111197, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111198, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111199, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111200, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111201, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111202, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111203, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111204, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111205, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111206, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111207, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111209, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111210, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111211, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111212, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111213, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111214, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111215, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111216, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111217, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111218, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111219, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111220, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111221, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111222, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111223, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111224, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111225, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111226, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111227, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111228, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111229, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111230, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111231, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111232, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111233, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111234, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111235, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111236, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111237, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111238, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111239, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111240, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111241, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111242, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111243, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111244, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111245, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111246, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111247, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111248, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111249, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111250, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111251, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111252, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111253, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111254, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111255, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111256, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111257, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111258, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111259, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111260, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111261, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111262, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111263, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111264, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111265, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111266, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111267, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111268, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111269, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111270, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111271, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111272, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111273, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111274, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111275, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111276, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111277, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111278, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111279, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111280, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111281, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111282, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111283, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111284, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111285, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111286, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111287, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111288, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111289, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111290, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111291, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111292, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111293, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111294, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111295, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111296, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111297, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111298, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111299, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111300, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111301, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111302, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111303, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111304, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111305, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111306, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111307, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111308, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111309, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111310, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111311, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111313, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111314, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111315, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111316, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111317, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111318, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111319, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111320, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111321, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111322, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111323, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111324, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111325, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111326, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111327, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111328, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111329, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111330, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111331, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111332, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111333, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111334, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111335, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111336, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111337, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111338, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111339, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111340, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111341, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111342, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111343, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111344, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111345, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111346, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111347, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111348, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111349, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111350, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111351, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111352, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111353, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111354, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {111355, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {113820, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {113821, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {113822, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {113823, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {113824, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {113825, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {113826, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {113827, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {118784, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118785, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118786, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118787, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118788, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118789, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118790, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118791, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118792, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118793, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118794, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118795, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118796, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118797, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118798, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118799, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118800, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118801, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118802, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118803, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118804, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118805, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118806, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118807, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118808, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118809, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118810, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118811, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118812, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118813, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118814, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118815, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118816, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118817, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118818, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118819, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118820, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118821, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118822, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118823, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118824, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118825, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118826, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118827, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118828, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118829, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118830, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118831, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118832, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118833, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118834, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118835, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118836, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118837, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118838, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118839, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118840, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118841, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118842, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118843, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118844, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118845, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118846, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118847, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118848, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118849, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118850, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118851, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118852, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118853, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118854, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118855, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118856, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118857, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118858, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118859, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118860, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118861, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118862, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118863, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118864, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118865, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118866, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118867, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118868, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118869, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118870, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118871, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118872, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118873, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118874, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118875, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118876, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118877, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118878, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118879, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118880, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118881, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118882, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118883, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118884, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118885, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118886, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118887, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118888, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118889, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118890, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118891, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118892, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118893, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118894, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118895, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118896, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118897, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118898, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118899, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118900, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118901, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118902, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118903, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118904, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118905, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118906, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118907, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118908, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118909, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118910, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118911, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118912, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118913, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118914, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118915, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118916, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118917, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118918, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118919, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118920, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118921, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118922, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118923, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118924, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118925, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118926, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118927, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118928, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118929, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118930, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118931, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118932, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118933, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118934, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118935, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118936, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118937, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118938, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118939, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118940, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118941, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118942, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118943, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118944, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118945, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118946, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118947, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118948, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118949, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118950, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118951, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118952, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118953, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118954, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118955, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118956, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118957, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118958, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118959, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118960, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118961, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118962, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118963, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118964, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118965, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118966, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118967, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118968, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118969, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118970, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118971, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118972, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118973, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118974, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118975, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118976, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118977, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118978, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118979, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118980, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118981, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118982, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118983, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118984, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118985, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118986, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118987, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118988, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118989, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118990, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118991, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118992, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118993, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118994, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118995, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118996, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118997, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118998, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {118999, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119000, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119001, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119002, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119003, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119004, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119005, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119006, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119007, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119008, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119009, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119010, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119011, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119012, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119013, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119014, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119015, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119016, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119017, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119018, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119019, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119020, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119021, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119022, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119023, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119024, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119025, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119026, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119027, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119028, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119029, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119040, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119041, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119042, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119043, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119044, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119045, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119046, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119047, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119048, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119049, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119050, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119051, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119052, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119053, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119054, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119055, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119056, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119057, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119058, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119059, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119060, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119061, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119062, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119063, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119064, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119065, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119066, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119067, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119068, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119069, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119070, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119071, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119072, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119073, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119074, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119075, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119076, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119077, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119078, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119081, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119082, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119083, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119084, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119085, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119086, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119087, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119088, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119089, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119090, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119091, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119092, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119093, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119094, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119095, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119096, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119097, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119098, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119099, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119100, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119101, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119102, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119103, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119104, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119105, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119106, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119107, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119108, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119109, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119110, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119111, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119112, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119113, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119114, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119115, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119116, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119117, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119118, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119119, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119120, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119121, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119122, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119123, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119124, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119125, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119126, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119127, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119128, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119129, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119130, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119131, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119132, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119133, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119134, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119135, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119136, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119137, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119138, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119139, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119140, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119141, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {119142, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {119143, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119144, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119145, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119146, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119147, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119148, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119149, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {119150, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {119151, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {119152, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {119153, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {119154, Unicode::Category_Mark_SpacingCombining, Unicode::Direction_Left_To_Right}, + {119155, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {119156, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {119157, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {119158, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {119159, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {119160, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {119161, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {119162, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {119163, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119164, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119165, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119166, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119167, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119168, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119169, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119170, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119171, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119172, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119173, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119174, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119175, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119176, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119177, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119178, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119179, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119180, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119181, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119182, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119183, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119184, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119185, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119186, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119187, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119188, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119189, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119190, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119191, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119192, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119193, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119194, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119195, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119196, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119197, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119198, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119199, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119200, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119201, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119202, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119203, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119204, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119205, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119206, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119207, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119208, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119209, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119210, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119211, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119212, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119213, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119214, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119215, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119216, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119217, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119218, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119219, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119220, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119221, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119222, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119223, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119224, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119225, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119226, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119227, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119228, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119229, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119230, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119231, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119232, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119233, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119234, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119235, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119236, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119237, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119238, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119239, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119240, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119241, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119242, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119243, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119244, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119245, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119246, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119247, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119248, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119249, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119250, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119251, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119252, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119253, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119254, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119255, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119256, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119257, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119258, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119259, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119260, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119261, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119262, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119263, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119264, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119265, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119266, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119267, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119268, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119269, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119270, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119271, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119272, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {119296, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119297, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119298, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119299, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119300, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119301, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119302, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119303, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119304, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119305, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119306, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119307, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119308, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119309, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119310, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119311, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119312, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119313, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119314, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119315, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119316, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119317, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119318, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119319, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119320, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119321, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119322, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119323, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119324, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119325, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119326, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119327, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119328, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119329, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119330, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119331, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119332, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119333, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119334, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119335, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119336, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119337, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119338, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119339, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119340, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119341, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119342, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119343, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119344, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119345, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119346, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119347, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119348, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119349, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119350, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119351, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119352, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119353, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119354, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119355, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119356, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119357, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119358, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119359, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119360, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119361, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119362, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119363, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119364, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {119365, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119520, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119521, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119522, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119523, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119524, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119525, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119526, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119527, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119528, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119529, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119530, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119531, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119532, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119533, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119534, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119535, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119536, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119537, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119538, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119539, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119552, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119553, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119554, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119555, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119556, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119557, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119558, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119559, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119560, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119561, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119562, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119563, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119564, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119565, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119566, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119567, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119568, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119569, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119570, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119571, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119572, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119573, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119574, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119575, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119576, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119577, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119578, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119579, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119580, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119581, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119582, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119583, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119584, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119585, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119586, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119587, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119588, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119589, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119590, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119591, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119592, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119593, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119594, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119595, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119596, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119597, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119598, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119599, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119600, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119601, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119602, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119603, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119604, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119605, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119606, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119607, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119608, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119609, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119610, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119611, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119612, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119613, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119614, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119615, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119616, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119617, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119618, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119619, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119620, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119621, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119622, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119623, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119624, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119625, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119626, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119627, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119628, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119629, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119630, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119631, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119632, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119633, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119634, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119635, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119636, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119637, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119638, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {119648, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119649, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119650, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119651, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119652, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119653, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119654, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119655, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119656, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119657, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119658, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119659, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119660, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119661, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119662, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119663, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119664, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119665, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119666, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119667, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119668, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119669, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119670, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119671, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119672, Unicode::Category_Number_Other, Unicode::Direction_Left_To_Right}, + {119808, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119809, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119810, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119811, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119812, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119813, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119814, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119815, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119816, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119817, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119818, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119819, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119820, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119821, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119822, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119823, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119824, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119825, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119826, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119827, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119828, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119829, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119830, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119831, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119832, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119833, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119834, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119835, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119836, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119837, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119838, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119839, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119840, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119841, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119842, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119843, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119844, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119845, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119846, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119847, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119848, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119849, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119850, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119851, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119852, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119853, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119854, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119855, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119856, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119857, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119858, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119859, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119860, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119861, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119862, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119863, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119864, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119865, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119866, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119867, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119868, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119869, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119870, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119871, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119872, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119873, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119874, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119875, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119876, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119877, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119878, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119879, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119880, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119881, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119882, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119883, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119884, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119885, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119886, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119887, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119888, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119889, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119890, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119891, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119892, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119894, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119895, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119896, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119897, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119898, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119899, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119900, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119901, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119902, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119903, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119904, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119905, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119906, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119907, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119908, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119909, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119910, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119911, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119912, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119913, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119914, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119915, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119916, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119917, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119918, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119919, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119920, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119921, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119922, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119923, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119924, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119925, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119926, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119927, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119928, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119929, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119930, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119931, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119932, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119933, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119934, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119935, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119936, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119937, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119938, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119939, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119940, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119941, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119942, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119943, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119944, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119945, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119946, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119947, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119948, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119949, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119950, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119951, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119952, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119953, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119954, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119955, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119956, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119957, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119958, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119959, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119960, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119961, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119962, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119963, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119964, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119966, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119967, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119970, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119973, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119974, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119977, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119978, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119979, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119980, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119982, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119983, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119984, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119985, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119986, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119987, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119988, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119989, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {119990, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119991, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119992, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119993, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119995, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119997, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119998, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {119999, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120000, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120001, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120002, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120003, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120005, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120006, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120007, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120008, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120009, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120010, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120011, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120012, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120013, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120014, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120015, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120016, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120017, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120018, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120019, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120020, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120021, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120022, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120023, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120024, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120025, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120026, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120027, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120028, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120029, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120030, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120031, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120032, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120033, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120034, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120035, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120036, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120037, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120038, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120039, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120040, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120041, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120042, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120043, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120044, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120045, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120046, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120047, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120048, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120049, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120050, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120051, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120052, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120053, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120054, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120055, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120056, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120057, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120058, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120059, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120060, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120061, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120062, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120063, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120064, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120065, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120066, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120067, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120068, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120069, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120071, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120072, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120073, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120074, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120077, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120078, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120079, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120080, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120081, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120082, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120083, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120084, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120086, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120087, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120088, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120089, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120090, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120091, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120092, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120094, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120095, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120096, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120097, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120098, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120099, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120100, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120101, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120102, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120103, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120104, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120105, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120106, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120107, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120108, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120109, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120110, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120111, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120112, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120113, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120114, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120115, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120116, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120117, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120118, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120119, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120120, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120121, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120123, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120124, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120125, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120126, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120128, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120129, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120130, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120131, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120132, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120134, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120138, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120139, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120140, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120141, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120142, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120143, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120144, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120146, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120147, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120148, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120149, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120150, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120151, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120152, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120153, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120154, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120155, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120156, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120157, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120158, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120159, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120160, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120161, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120162, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120163, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120164, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120165, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120166, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120167, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120168, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120169, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120170, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120171, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120172, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120173, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120174, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120175, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120176, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120177, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120178, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120179, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120180, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120181, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120182, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120183, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120184, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120185, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120186, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120187, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120188, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120189, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120190, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120191, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120192, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120193, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120194, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120195, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120196, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120197, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120198, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120199, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120200, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120201, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120202, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120203, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120204, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120205, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120206, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120207, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120208, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120209, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120210, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120211, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120212, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120213, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120214, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120215, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120216, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120217, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120218, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120219, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120220, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120221, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120222, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120223, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120224, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120225, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120226, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120227, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120228, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120229, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120230, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120231, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120232, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120233, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120234, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120235, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120236, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120237, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120238, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120239, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120240, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120241, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120242, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120243, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120244, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120245, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120246, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120247, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120248, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120249, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120250, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120251, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120252, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120253, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120254, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120255, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120256, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120257, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120258, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120259, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120260, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120261, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120262, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120263, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120264, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120265, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120266, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120267, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120268, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120269, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120270, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120271, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120272, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120273, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120274, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120275, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120276, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120277, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120278, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120279, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120280, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120281, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120282, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120283, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120284, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120285, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120286, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120287, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120288, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120289, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120290, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120291, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120292, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120293, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120294, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120295, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120296, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120297, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120298, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120299, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120300, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120301, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120302, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120303, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120304, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120305, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120306, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120307, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120308, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120309, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120310, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120311, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120312, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120313, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120314, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120315, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120316, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120317, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120318, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120319, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120320, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120321, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120322, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120323, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120324, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120325, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120326, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120327, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120328, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120329, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120330, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120331, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120332, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120333, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120334, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120335, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120336, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120337, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120338, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120339, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120340, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120341, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120342, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120343, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120344, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120345, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120346, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120347, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120348, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120349, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120350, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120351, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120352, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120353, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120354, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120355, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120356, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120357, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120358, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120359, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120360, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120361, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120362, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120363, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120364, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120365, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120366, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120367, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120368, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120369, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120370, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120371, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120372, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120373, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120374, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120375, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120376, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120377, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120378, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120379, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120380, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120381, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120382, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120383, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120384, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120385, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120386, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120387, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120388, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120389, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120390, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120391, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120392, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120393, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120394, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120395, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120396, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120397, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120398, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120399, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120400, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120401, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120402, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120403, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120404, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120405, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120406, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120407, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120408, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120409, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120410, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120411, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120412, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120413, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120414, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120415, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120416, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120417, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120418, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120419, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120420, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120421, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120422, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120423, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120424, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120425, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120426, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120427, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120428, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120429, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120430, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120431, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120432, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120433, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120434, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120435, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120436, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120437, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120438, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120439, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120440, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120441, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120442, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120443, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120444, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120445, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120446, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120447, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120448, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120449, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120450, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120451, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120452, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120453, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120454, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120455, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120456, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120457, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120458, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120459, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120460, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120461, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120462, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120463, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120464, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120465, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120466, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120467, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120468, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120469, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120470, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120471, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120472, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120473, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120474, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120475, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120476, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120477, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120478, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120479, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120480, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120481, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120482, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120483, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120484, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120485, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120488, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120489, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120490, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120491, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120492, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120493, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120494, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120495, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120496, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120497, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120498, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120499, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120500, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120501, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120502, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120503, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120504, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120505, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120506, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120507, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120508, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120509, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120510, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120511, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120512, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120513, Unicode::Category_Symbol_Math, Unicode::Direction_Left_To_Right}, + {120514, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120515, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120516, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120517, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120518, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120519, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120520, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120521, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120522, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120523, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120524, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120525, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120526, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120527, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120528, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120529, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120530, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120531, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120532, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120533, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120534, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120535, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120536, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120537, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120538, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120539, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {120540, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120541, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120542, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120543, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120544, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120545, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120546, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120547, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120548, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120549, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120550, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120551, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120552, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120553, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120554, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120555, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120556, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120557, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120558, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120559, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120560, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120561, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120562, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120563, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120564, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120565, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120566, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120567, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120568, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120569, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120570, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120571, Unicode::Category_Symbol_Math, Unicode::Direction_Left_To_Right}, + {120572, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120573, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120574, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120575, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120576, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120577, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120578, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120579, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120580, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120581, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120582, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120583, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120584, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120585, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120586, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120587, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120588, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120589, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120590, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120591, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120592, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120593, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120594, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120595, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120596, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120597, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {120598, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120599, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120600, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120601, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120602, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120603, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120604, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120605, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120606, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120607, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120608, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120609, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120610, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120611, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120612, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120613, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120614, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120615, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120616, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120617, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120618, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120619, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120620, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120621, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120622, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120623, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120624, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120625, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120626, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120627, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120628, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120629, Unicode::Category_Symbol_Math, Unicode::Direction_Left_To_Right}, + {120630, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120631, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120632, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120633, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120634, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120635, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120636, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120637, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120638, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120639, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120640, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120641, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120642, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120643, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120644, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120645, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120646, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120647, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120648, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120649, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120650, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120651, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120652, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120653, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120654, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120655, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {120656, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120657, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120658, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120659, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120660, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120661, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120662, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120663, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120664, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120665, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120666, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120667, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120668, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120669, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120670, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120671, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120672, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120673, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120674, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120675, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120676, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120677, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120678, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120679, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120680, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120681, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120682, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120683, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120684, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120685, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120686, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120687, Unicode::Category_Symbol_Math, Unicode::Direction_Left_To_Right}, + {120688, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120689, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120690, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120691, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120692, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120693, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120694, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120695, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120696, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120697, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120698, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120699, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120700, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120701, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120702, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120703, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120704, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120705, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120706, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120707, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120708, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120709, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120710, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120711, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120712, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120713, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {120714, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120715, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120716, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120717, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120718, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120719, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120720, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120721, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120722, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120723, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120724, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120725, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120726, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120727, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120728, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120729, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120730, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120731, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120732, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120733, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120734, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120735, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120736, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120737, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120738, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120739, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120740, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120741, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120742, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120743, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120744, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120745, Unicode::Category_Symbol_Math, Unicode::Direction_Left_To_Right}, + {120746, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120747, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120748, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120749, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120750, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120751, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120752, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120753, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120754, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120755, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120756, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120757, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120758, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120759, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120760, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120761, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120762, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120763, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120764, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120765, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120766, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120767, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120768, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120769, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120770, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120771, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {120772, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120773, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120774, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120775, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120776, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120777, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120778, Unicode::Category_Letter_Uppercase, Unicode::Direction_Left_To_Right}, + {120779, Unicode::Category_Letter_Lowercase, Unicode::Direction_Left_To_Right}, + {120782, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120783, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120784, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120785, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120786, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120787, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120788, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120789, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120790, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120791, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120792, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120793, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120794, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120795, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120796, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120797, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120798, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120799, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120800, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120801, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120802, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120803, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120804, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120805, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120806, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120807, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120808, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120809, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120810, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120811, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120812, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120813, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120814, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120815, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120816, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120817, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120818, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120819, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120820, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120821, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120822, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120823, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120824, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120825, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120826, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120827, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120828, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120829, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120830, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120831, Unicode::Category_Number_DecimalDigit, Unicode::Direction_European_Number}, + {120832, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120833, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120834, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120835, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120836, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120837, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120838, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120839, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120840, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120841, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120842, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120843, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120844, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120845, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120846, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120847, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120848, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120849, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120850, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120851, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120852, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120853, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120854, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120855, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120856, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120857, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120858, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120859, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120860, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120861, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120862, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120863, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120864, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120865, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120866, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120867, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120868, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120869, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120870, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120871, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120872, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120873, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120874, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120875, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120876, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120877, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120878, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120879, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120880, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120881, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120882, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120883, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120884, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120885, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120886, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120887, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120888, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120889, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120890, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120891, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120892, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120893, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120894, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120895, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120896, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120897, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120898, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120899, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120900, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120901, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120902, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120903, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120904, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120905, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120906, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120907, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120908, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120909, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120910, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120911, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120912, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120913, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120914, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120915, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120916, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120917, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120918, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120919, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120920, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120921, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120922, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120923, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120924, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120925, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120926, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120927, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120928, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120929, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120930, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120931, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120932, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120933, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120934, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120935, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120936, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120937, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120938, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120939, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120940, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120941, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120942, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120943, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120944, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120945, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120946, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120947, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120948, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120949, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120950, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120951, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120952, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120953, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120954, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120955, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120956, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120957, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120958, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120959, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120960, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120961, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120962, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120963, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120964, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120965, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120966, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120967, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120968, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120969, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120970, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120971, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120972, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120973, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120974, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120975, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120976, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120977, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120978, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120979, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120980, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120981, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120982, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120983, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120984, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120985, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120986, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120987, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120988, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120989, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120990, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120991, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120992, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120993, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120994, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120995, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120996, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120997, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120998, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {120999, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121000, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121001, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121002, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121003, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121004, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121005, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121006, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121007, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121008, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121009, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121010, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121011, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121012, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121013, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121014, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121015, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121016, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121017, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121018, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121019, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121020, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121021, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121022, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121023, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121024, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121025, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121026, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121027, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121028, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121029, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121030, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121031, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121032, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121033, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121034, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121035, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121036, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121037, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121038, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121039, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121040, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121041, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121042, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121043, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121044, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121045, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121046, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121047, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121048, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121049, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121050, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121051, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121052, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121053, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121054, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121055, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121056, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121057, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121058, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121059, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121060, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121061, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121062, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121063, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121064, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121065, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121066, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121067, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121068, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121069, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121070, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121071, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121072, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121073, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121074, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121075, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121076, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121077, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121078, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121079, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121080, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121081, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121082, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121083, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121084, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121085, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121086, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121087, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121088, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121089, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121090, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121091, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121092, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121093, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121094, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121095, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121096, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121097, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121098, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121099, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121100, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121101, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121102, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121103, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121104, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121105, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121106, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121107, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121108, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121109, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121110, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121111, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121112, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121113, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121114, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121115, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121116, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121117, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121118, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121119, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121120, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121121, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121122, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121123, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121124, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121125, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121126, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121127, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121128, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121129, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121130, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121131, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121132, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121133, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121134, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121135, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121136, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121137, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121138, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121139, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121140, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121141, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121142, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121143, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121144, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121145, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121146, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121147, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121148, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121149, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121150, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121151, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121152, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121153, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121154, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121155, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121156, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121157, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121158, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121159, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121160, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121161, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121162, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121163, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121164, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121165, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121166, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121167, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121168, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121169, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121170, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121171, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121172, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121173, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121174, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121175, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121176, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121177, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121178, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121179, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121180, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121181, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121182, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121183, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121184, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121185, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121186, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121187, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121188, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121189, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121190, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121191, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121192, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121193, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121194, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121195, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121196, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121197, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121198, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121199, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121200, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121201, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121202, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121203, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121204, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121205, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121206, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121207, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121208, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121209, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121210, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121211, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121212, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121213, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121214, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121215, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121216, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121217, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121218, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121219, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121220, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121221, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121222, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121223, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121224, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121225, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121226, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121227, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121228, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121229, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121230, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121231, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121232, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121233, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121234, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121235, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121236, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121237, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121238, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121239, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121240, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121241, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121242, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121243, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121244, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121245, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121246, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121247, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121248, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121249, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121250, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121251, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121252, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121253, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121254, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121255, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121256, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121257, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121258, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121259, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121260, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121261, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121262, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121263, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121264, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121265, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121266, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121267, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121268, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121269, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121270, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121271, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121272, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121273, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121274, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121275, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121276, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121277, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121278, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121279, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121280, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121281, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121282, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121283, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121284, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121285, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121286, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121287, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121288, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121289, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121290, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121291, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121292, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121293, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121294, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121295, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121296, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121297, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121298, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121299, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121300, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121301, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121302, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121303, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121304, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121305, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121306, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121307, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121308, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121309, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121310, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121311, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121312, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121313, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121314, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121315, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121316, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121317, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121318, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121319, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121320, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121321, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121322, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121323, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121324, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121325, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121326, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121327, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121328, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121329, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121330, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121331, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121332, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121333, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121334, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121335, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121336, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121337, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121338, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121339, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121340, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121341, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121342, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121343, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121344, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121345, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121346, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121347, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121348, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121349, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121350, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121351, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121352, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121353, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121354, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121355, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121356, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121357, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121358, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121359, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121360, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121361, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121362, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121363, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121364, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121365, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121366, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121367, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121368, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121369, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121370, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121371, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121372, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121373, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121374, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121375, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121376, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121377, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121378, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121379, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121380, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121381, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121382, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121383, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121384, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121385, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121386, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121387, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121388, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121389, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121390, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121391, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121392, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121393, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121394, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121395, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121396, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121397, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121398, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121399, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121400, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121401, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121402, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121403, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121404, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121405, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121406, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121407, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121408, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121409, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121410, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121411, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121412, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121413, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121414, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121415, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121416, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121417, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121418, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121419, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121420, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121421, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121422, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121423, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121424, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121425, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121426, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121427, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121428, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121429, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121430, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121431, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121432, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121433, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121434, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121435, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121436, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121437, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121438, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121439, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121440, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121441, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121442, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121443, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121444, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121445, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121446, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121447, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121448, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121449, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121450, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121451, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121452, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121453, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121454, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121455, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121456, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121457, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121458, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121459, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121460, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121461, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121462, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121463, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121464, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121465, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121466, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121467, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121468, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121469, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121470, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121471, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121472, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121473, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121474, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121475, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121476, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121477, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121478, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {121479, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {121480, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {121481, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {121482, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {121483, Unicode::Category_Punctuation_Other, Unicode::Direction_Left_To_Right}, + {121499, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121500, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121501, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121502, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121503, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121505, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121506, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121507, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121508, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121509, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121510, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121511, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121512, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121513, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121514, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121515, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121516, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121517, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121518, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {121519, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122880, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122881, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122882, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122883, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122884, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122885, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122886, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122888, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122889, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122890, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122891, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122892, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122893, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122894, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122895, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122896, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122897, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122898, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122899, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122900, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122901, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122902, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122903, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122904, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122907, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122908, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122909, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122910, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122911, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122912, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122913, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122915, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122916, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122918, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122919, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122920, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122921, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {122922, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {124928, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124929, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124930, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124931, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124932, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124933, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124934, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124935, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124936, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124937, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124938, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124939, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124940, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124941, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124942, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124943, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124944, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124945, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124946, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124947, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124948, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124949, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124950, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124951, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124952, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124953, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124954, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124955, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124956, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124957, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124958, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124959, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124960, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124961, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124962, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124963, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124964, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124965, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124966, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124967, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124968, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124969, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124970, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124971, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124972, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124973, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124974, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124975, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124976, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124977, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124978, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124979, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124980, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124981, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124982, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124983, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124984, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124985, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124986, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124987, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124988, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124989, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124990, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124991, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124992, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124993, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124994, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124995, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124996, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124997, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124998, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {124999, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125000, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125001, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125002, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125003, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125004, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125005, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125006, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125007, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125008, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125009, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125010, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125011, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125012, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125013, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125014, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125015, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125016, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125017, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125018, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125019, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125020, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125021, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125022, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125023, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125024, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125025, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125026, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125027, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125028, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125029, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125030, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125031, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125032, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125033, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125034, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125035, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125036, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125037, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125038, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125039, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125040, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125041, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125042, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125043, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125044, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125045, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125046, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125047, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125048, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125049, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125050, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125051, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125052, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125053, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125054, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125055, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125056, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125057, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125058, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125059, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125060, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125061, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125062, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125063, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125064, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125065, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125066, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125067, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125068, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125069, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125070, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125071, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125072, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125073, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125074, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125075, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125076, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125077, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125078, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125079, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125080, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125081, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125082, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125083, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125084, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125085, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125086, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125087, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125088, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125089, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125090, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125091, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125092, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125093, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125094, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125095, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125096, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125097, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125098, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125099, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125100, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125101, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125102, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125103, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125104, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125105, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125106, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125107, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125108, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125109, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125110, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125111, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125112, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125113, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125114, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125115, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125116, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125117, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125118, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125119, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125120, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125121, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125122, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125123, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125124, Unicode::Category_Letter_Other, Unicode::Direction_Right_To_Left}, + {125127, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {125128, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {125129, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {125130, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {125131, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {125132, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {125133, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {125134, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {125135, Unicode::Category_Number_Other, Unicode::Direction_Right_To_Left}, + {125136, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125137, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125138, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125139, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125140, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125141, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125142, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125184, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125185, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125186, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125187, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125188, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125189, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125190, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125191, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125192, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125193, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125194, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125195, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125196, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125197, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125198, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125199, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125200, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125201, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125202, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125203, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125204, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125205, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125206, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125207, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125208, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125209, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125210, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125211, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125212, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125213, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125214, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125215, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125216, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125217, Unicode::Category_Letter_Uppercase, Unicode::Direction_Right_To_Left}, + {125218, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125219, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125220, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125221, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125222, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125223, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125224, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125225, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125226, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125227, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125228, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125229, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125230, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125231, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125232, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125233, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125234, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125235, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125236, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125237, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125238, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125239, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125240, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125241, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125242, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125243, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125244, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125245, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125246, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125247, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125248, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125249, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125250, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125251, Unicode::Category_Letter_Lowercase, Unicode::Direction_Right_To_Left}, + {125252, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125253, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125254, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125255, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125256, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125257, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125258, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {125264, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {125265, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {125266, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {125267, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {125268, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {125269, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {125270, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {125271, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {125272, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {125273, Unicode::Category_Number_DecimalDigit, Unicode::Direction_Right_To_Left}, + {125278, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {125279, Unicode::Category_Punctuation_Other, Unicode::Direction_Right_To_Left}, + {126065, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126066, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126067, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126068, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126069, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126070, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126071, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126072, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126073, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126074, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126075, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126076, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126077, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126078, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126079, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126080, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126081, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126082, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126083, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126084, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126085, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126086, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126087, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126088, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126089, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126090, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126091, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126092, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126093, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126094, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126095, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126096, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126097, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126098, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126099, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126100, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126101, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126102, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126103, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126104, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126105, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126106, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126107, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126108, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126109, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126110, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126111, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126112, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126113, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126114, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126115, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126116, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126117, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126118, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126119, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126120, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126121, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126122, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126123, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126124, Unicode::Category_Symbol_Other, Unicode::Direction_Arabic_Letter}, + {126125, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126126, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126127, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126128, Unicode::Category_Symbol_Currency, Unicode::Direction_Arabic_Letter}, + {126129, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126130, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126131, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126132, Unicode::Category_Number_Other, Unicode::Direction_Arabic_Letter}, + {126464, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126465, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126466, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126467, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126469, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126470, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126471, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126472, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126473, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126474, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126475, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126476, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126477, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126478, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126479, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126480, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126481, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126482, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126483, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126484, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126485, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126486, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126487, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126488, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126489, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126490, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126491, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126492, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126493, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126494, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126495, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126497, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126498, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126500, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126503, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126505, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126506, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126507, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126508, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126509, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126510, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126511, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126512, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126513, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126514, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126516, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126517, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126518, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126519, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126521, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126523, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126530, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126535, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126537, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126539, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126541, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126542, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126543, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126545, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126546, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126548, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126551, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126553, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126555, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126557, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126559, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126561, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126562, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126564, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126567, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126568, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126569, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126570, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126572, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126573, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126574, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126575, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126576, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126577, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126578, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126580, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126581, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126582, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126583, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126585, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126586, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126587, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126588, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126590, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126592, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126593, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126594, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126595, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126596, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126597, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126598, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126599, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126600, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126601, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126603, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126604, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126605, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126606, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126607, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126608, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126609, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126610, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126611, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126612, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126613, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126614, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126615, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126616, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126617, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126618, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126619, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126625, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126626, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126627, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126629, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126630, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126631, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126632, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126633, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126635, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126636, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126637, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126638, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126639, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126640, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126641, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126642, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126643, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126644, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126645, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126646, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126647, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126648, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126649, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126650, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126651, Unicode::Category_Letter_Other, Unicode::Direction_Arabic_Letter}, + {126704, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {126705, Unicode::Category_Symbol_Math, Unicode::Direction_Other_Neutral}, + {126976, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126977, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126978, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126979, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126980, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126981, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126982, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126983, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126984, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126985, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126986, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126987, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126988, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126989, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126990, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126991, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126992, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126993, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126994, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126995, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126996, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126997, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126998, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {126999, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127000, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127001, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127002, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127003, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127004, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127005, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127006, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127007, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127008, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127009, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127010, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127011, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127012, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127013, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127014, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127015, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127016, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127017, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127018, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127019, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127024, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127025, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127026, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127027, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127028, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127029, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127030, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127031, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127032, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127033, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127034, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127035, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127036, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127037, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127038, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127039, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127040, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127041, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127042, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127043, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127044, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127045, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127046, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127047, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127048, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127049, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127050, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127051, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127052, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127053, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127054, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127055, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127056, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127057, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127058, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127059, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127060, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127061, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127062, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127063, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127064, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127065, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127066, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127067, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127068, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127069, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127070, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127071, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127072, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127073, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127074, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127075, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127076, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127077, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127078, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127079, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127080, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127081, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127082, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127083, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127084, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127085, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127086, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127087, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127088, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127089, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127090, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127091, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127092, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127093, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127094, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127095, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127096, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127097, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127098, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127099, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127100, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127101, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127102, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127103, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127104, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127105, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127106, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127107, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127108, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127109, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127110, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127111, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127112, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127113, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127114, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127115, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127116, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127117, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127118, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127119, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127120, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127121, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127122, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127123, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127136, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127137, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127138, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127139, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127140, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127141, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127142, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127143, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127144, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127145, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127146, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127147, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127148, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127149, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127150, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127153, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127154, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127155, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127156, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127157, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127158, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127159, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127160, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127161, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127162, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127163, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127164, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127165, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127166, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127167, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127169, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127170, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127171, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127172, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127173, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127174, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127175, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127176, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127177, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127178, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127179, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127180, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127181, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127182, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127183, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127185, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127186, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127187, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127188, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127189, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127190, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127191, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127192, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127193, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127194, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127195, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127196, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127197, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127198, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127199, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127200, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127201, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127202, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127203, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127204, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127205, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127206, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127207, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127208, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127209, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127210, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127211, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127212, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127213, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127214, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127215, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127216, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127217, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127218, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127219, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127220, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127221, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127232, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127233, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127234, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127235, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127236, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127237, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127238, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127239, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127240, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127241, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127242, Unicode::Category_Number_Other, Unicode::Direction_European_Number}, + {127243, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {127244, Unicode::Category_Number_Other, Unicode::Direction_Other_Neutral}, + {127248, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127249, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127250, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127251, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127252, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127253, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127254, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127255, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127256, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127257, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127258, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127259, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127260, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127261, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127262, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127263, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127264, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127265, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127266, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127267, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127268, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127269, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127270, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127271, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127272, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127273, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127274, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127275, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127276, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127277, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127278, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127279, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127280, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127281, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127282, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127283, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127284, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127285, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127286, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127287, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127288, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127289, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127290, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127291, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127292, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127293, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127294, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127295, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127296, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127297, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127298, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127299, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127300, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127301, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127302, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127303, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127304, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127305, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127306, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127307, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127308, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127309, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127310, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127311, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127312, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127313, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127314, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127315, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127316, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127317, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127318, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127319, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127320, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127321, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127322, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127323, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127324, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127325, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127326, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127327, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127328, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127329, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127330, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127331, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127332, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127333, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127334, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127335, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127336, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127337, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127338, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127339, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127344, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127345, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127346, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127347, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127348, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127349, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127350, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127351, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127352, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127353, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127354, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127355, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127356, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127357, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127358, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127359, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127360, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127361, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127362, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127363, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127364, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127365, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127366, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127367, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127368, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127369, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127370, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127371, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127372, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127373, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127374, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127375, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127376, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127377, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127378, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127379, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127380, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127381, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127382, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127383, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127384, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127385, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127386, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127387, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127388, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127389, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127390, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127391, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127392, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127393, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127394, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127395, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127396, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127397, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127398, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127399, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127400, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127401, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127402, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127403, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127404, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127462, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127463, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127464, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127465, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127466, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127467, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127468, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127469, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127470, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127471, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127472, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127473, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127474, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127475, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127476, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127477, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127478, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127479, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127480, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127481, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127482, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127483, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127484, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127485, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127486, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127487, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127488, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127489, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127490, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127504, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127505, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127506, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127507, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127508, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127509, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127510, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127511, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127512, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127513, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127514, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127515, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127516, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127517, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127518, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127519, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127520, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127521, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127522, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127523, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127524, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127525, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127526, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127527, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127528, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127529, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127530, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127531, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127532, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127533, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127534, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127535, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127536, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127537, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127538, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127539, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127540, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127541, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127542, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127543, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127544, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127545, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127546, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127547, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127552, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127553, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127554, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127555, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127556, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127557, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127558, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127559, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127560, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127568, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127569, Unicode::Category_Symbol_Other, Unicode::Direction_Left_To_Right}, + {127584, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127585, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127586, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127587, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127588, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127589, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127744, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127745, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127746, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127747, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127748, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127749, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127750, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127751, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127752, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127753, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127754, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127755, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127756, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127757, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127758, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127759, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127760, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127761, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127762, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127763, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127764, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127765, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127766, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127767, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127768, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127769, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127770, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127771, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127772, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127773, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127774, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127775, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127776, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127777, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127778, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127779, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127780, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127781, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127782, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127783, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127784, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127785, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127786, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127787, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127788, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127789, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127790, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127791, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127792, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127793, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127794, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127795, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127796, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127797, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127798, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127799, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127800, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127801, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127802, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127803, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127804, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127805, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127806, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127807, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127808, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127809, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127810, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127811, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127812, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127813, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127814, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127815, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127816, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127817, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127818, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127819, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127820, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127821, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127822, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127823, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127824, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127825, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127826, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127827, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127828, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127829, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127830, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127831, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127832, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127833, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127834, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127835, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127836, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127837, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127838, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127839, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127840, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127841, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127842, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127843, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127844, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127845, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127846, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127847, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127848, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127849, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127850, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127851, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127852, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127853, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127854, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127855, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127856, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127857, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127858, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127859, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127860, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127861, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127862, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127863, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127864, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127865, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127866, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127867, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127868, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127869, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127870, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127871, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127872, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127873, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127874, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127875, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127876, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127877, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127878, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127879, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127880, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127881, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127882, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127883, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127884, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127885, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127886, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127887, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127888, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127889, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127890, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127891, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127892, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127893, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127894, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127895, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127896, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127897, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127898, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127899, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127900, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127901, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127902, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127903, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127904, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127905, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127906, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127907, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127908, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127909, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127910, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127911, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127912, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127913, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127914, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127915, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127916, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127917, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127918, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127919, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127920, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127921, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127922, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127923, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127924, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127925, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127926, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127927, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127928, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127929, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127930, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127931, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127932, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127933, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127934, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127935, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127936, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127937, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127938, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127939, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127940, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127941, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127942, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127943, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127944, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127945, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127946, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127947, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127948, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127949, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127950, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127951, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127952, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127953, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127954, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127955, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127956, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127957, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127958, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127959, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127960, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127961, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127962, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127963, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127964, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127965, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127966, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127967, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127968, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127969, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127970, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127971, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127972, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127973, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127974, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127975, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127976, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127977, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127978, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127979, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127980, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127981, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127982, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127983, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127984, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127985, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127986, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127987, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127988, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127989, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127990, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127991, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127992, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127993, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127994, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {127995, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {127996, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {127997, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {127998, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {127999, Unicode::Category_Symbol_Modifier, Unicode::Direction_Other_Neutral}, + {128000, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128001, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128002, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128003, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128004, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128005, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128006, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128007, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128008, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128009, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128010, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128011, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128012, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128013, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128014, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128015, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128016, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128017, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128018, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128019, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128020, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128021, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128022, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128023, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128024, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128025, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128026, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128027, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128028, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128029, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128030, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128031, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128032, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128033, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128034, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128035, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128036, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128037, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128038, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128039, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128040, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128041, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128042, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128043, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128044, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128045, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128046, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128047, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128048, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128049, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128050, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128051, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128052, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128053, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128054, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128055, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128056, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128057, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128058, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128059, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128060, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128061, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128062, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128063, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128064, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128065, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128066, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128067, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128068, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128069, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128070, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128071, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128072, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128073, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128074, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128075, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128076, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128077, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128078, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128079, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128080, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128081, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128082, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128083, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128084, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128085, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128086, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128087, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128088, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128089, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128090, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128091, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128092, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128093, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128094, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128095, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128096, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128097, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128098, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128099, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128100, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128101, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128102, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128103, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128104, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128105, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128106, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128107, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128108, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128109, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128110, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128111, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128112, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128113, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128114, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128115, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128116, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128117, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128118, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128119, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128120, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128121, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128122, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128123, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128124, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128125, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128126, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128127, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128128, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128129, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128130, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128131, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128132, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128133, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128134, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128135, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128136, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128137, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128138, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128139, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128140, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128141, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128142, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128143, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128144, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128145, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128146, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128147, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128148, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128149, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128150, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128151, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128152, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128153, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128154, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128155, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128156, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128157, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128158, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128159, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128160, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128161, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128162, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128163, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128164, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128165, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128166, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128167, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128168, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128169, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128170, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128171, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128172, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128173, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128174, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128175, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128176, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128177, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128178, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128179, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128180, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128181, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128182, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128183, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128184, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128185, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128186, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128187, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128188, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128189, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128190, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128191, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128192, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128193, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128194, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128195, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128196, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128197, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128198, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128199, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128200, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128201, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128202, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128203, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128204, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128205, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128206, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128207, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128208, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128209, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128210, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128211, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128212, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128213, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128214, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128215, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128216, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128217, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128218, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128219, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128220, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128221, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128222, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128223, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128224, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128225, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128226, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128227, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128228, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128229, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128230, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128231, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128232, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128233, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128234, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128235, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128236, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128237, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128238, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128239, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128240, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128241, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128242, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128243, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128244, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128245, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128246, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128247, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128248, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128249, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128250, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128251, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128252, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128253, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128254, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128255, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128256, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128257, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128258, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128259, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128260, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128261, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128262, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128263, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128264, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128265, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128266, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128267, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128268, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128269, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128270, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128271, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128272, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128273, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128274, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128275, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128276, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128277, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128278, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128279, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128280, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128281, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128282, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128283, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128284, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128285, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128286, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128287, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128288, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128289, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128290, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128291, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128292, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128293, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128294, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128295, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128296, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128297, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128298, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128299, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128300, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128301, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128302, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128303, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128304, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128305, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128306, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128307, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128308, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128309, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128310, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128311, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128312, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128313, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128314, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128315, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128316, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128317, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128318, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128319, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128320, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128321, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128322, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128323, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128324, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128325, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128326, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128327, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128328, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128329, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128330, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128331, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128332, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128333, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128334, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128335, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128336, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128337, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128338, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128339, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128340, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128341, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128342, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128343, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128344, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128345, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128346, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128347, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128348, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128349, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128350, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128351, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128352, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128353, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128354, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128355, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128356, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128357, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128358, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128359, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128360, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128361, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128362, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128363, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128364, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128365, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128366, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128367, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128368, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128369, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128370, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128371, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128372, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128373, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128374, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128375, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128376, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128377, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128378, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128379, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128380, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128381, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128382, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128383, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128384, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128385, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128386, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128387, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128388, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128389, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128390, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128391, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128392, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128393, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128394, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128395, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128396, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128397, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128398, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128399, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128400, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128401, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128402, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128403, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128404, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128405, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128406, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128407, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128408, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128409, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128410, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128411, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128412, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128413, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128414, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128415, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128416, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128417, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128418, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128419, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128420, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128421, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128422, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128423, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128424, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128425, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128426, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128427, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128428, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128429, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128430, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128431, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128432, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128433, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128434, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128435, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128436, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128437, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128438, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128439, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128440, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128441, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128442, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128443, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128444, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128445, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128446, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128447, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128448, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128449, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128450, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128451, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128452, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128453, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128454, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128455, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128456, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128457, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128458, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128459, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128460, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128461, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128462, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128463, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128464, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128465, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128466, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128467, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128468, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128469, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128470, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128471, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128472, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128473, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128474, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128475, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128476, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128477, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128478, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128479, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128480, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128481, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128482, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128483, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128484, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128485, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128486, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128487, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128488, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128489, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128490, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128491, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128492, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128493, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128494, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128495, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128496, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128497, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128498, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128499, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128500, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128501, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128502, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128503, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128504, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128505, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128506, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128507, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128508, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128509, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128510, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128511, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128512, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128513, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128514, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128515, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128516, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128517, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128518, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128519, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128520, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128521, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128522, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128523, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128524, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128525, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128526, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128527, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128528, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128529, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128530, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128531, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128532, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128533, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128534, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128535, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128536, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128537, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128538, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128539, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128540, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128541, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128542, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128543, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128544, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128545, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128546, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128547, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128548, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128549, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128550, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128551, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128552, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128553, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128554, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128555, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128556, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128557, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128558, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128559, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128560, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128561, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128562, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128563, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128564, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128565, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128566, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128567, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128568, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128569, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128570, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128571, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128572, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128573, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128574, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128575, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128576, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128577, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128578, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128579, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128580, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128581, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128582, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128583, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128584, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128585, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128586, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128587, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128588, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128589, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128590, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128591, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128592, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128593, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128594, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128595, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128596, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128597, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128598, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128599, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128600, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128601, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128602, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128603, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128604, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128605, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128606, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128607, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128608, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128609, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128610, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128611, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128612, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128613, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128614, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128615, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128616, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128617, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128618, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128619, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128620, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128621, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128622, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128623, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128624, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128625, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128626, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128627, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128628, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128629, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128630, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128631, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128632, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128633, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128634, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128635, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128636, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128637, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128638, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128639, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128640, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128641, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128642, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128643, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128644, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128645, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128646, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128647, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128648, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128649, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128650, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128651, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128652, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128653, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128654, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128655, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128656, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128657, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128658, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128659, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128660, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128661, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128662, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128663, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128664, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128665, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128666, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128667, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128668, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128669, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128670, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128671, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128672, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128673, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128674, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128675, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128676, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128677, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128678, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128679, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128680, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128681, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128682, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128683, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128684, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128685, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128686, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128687, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128688, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128689, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128690, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128691, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128692, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128693, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128694, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128695, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128696, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128697, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128698, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128699, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128700, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128701, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128702, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128703, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128704, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128705, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128706, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128707, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128708, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128709, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128710, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128711, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128712, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128713, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128714, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128715, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128716, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128717, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128718, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128719, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128720, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128721, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128722, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128723, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128724, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128736, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128737, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128738, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128739, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128740, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128741, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128742, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128743, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128744, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128745, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128746, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128747, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128748, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128752, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128753, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128754, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128755, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128756, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128757, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128758, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128759, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128760, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128761, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128768, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128769, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128770, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128771, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128772, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128773, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128774, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128775, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128776, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128777, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128778, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128779, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128780, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128781, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128782, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128783, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128784, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128785, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128786, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128787, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128788, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128789, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128790, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128791, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128792, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128793, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128794, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128795, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128796, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128797, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128798, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128799, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128800, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128801, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128802, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128803, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128804, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128805, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128806, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128807, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128808, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128809, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128810, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128811, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128812, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128813, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128814, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128815, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128816, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128817, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128818, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128819, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128820, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128821, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128822, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128823, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128824, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128825, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128826, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128827, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128828, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128829, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128830, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128831, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128832, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128833, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128834, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128835, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128836, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128837, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128838, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128839, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128840, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128841, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128842, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128843, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128844, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128845, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128846, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128847, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128848, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128849, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128850, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128851, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128852, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128853, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128854, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128855, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128856, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128857, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128858, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128859, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128860, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128861, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128862, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128863, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128864, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128865, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128866, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128867, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128868, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128869, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128870, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128871, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128872, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128873, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128874, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128875, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128876, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128877, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128878, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128879, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128880, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128881, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128882, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128883, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128896, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128897, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128898, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128899, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128900, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128901, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128902, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128903, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128904, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128905, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128906, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128907, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128908, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128909, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128910, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128911, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128912, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128913, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128914, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128915, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128916, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128917, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128918, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128919, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128920, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128921, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128922, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128923, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128924, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128925, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128926, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128927, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128928, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128929, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128930, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128931, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128932, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128933, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128934, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128935, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128936, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128937, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128938, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128939, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128940, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128941, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128942, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128943, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128944, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128945, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128946, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128947, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128948, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128949, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128950, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128951, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128952, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128953, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128954, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128955, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128956, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128957, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128958, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128959, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128960, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128961, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128962, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128963, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128964, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128965, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128966, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128967, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128968, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128969, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128970, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128971, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128972, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128973, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128974, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128975, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128976, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128977, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128978, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128979, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128980, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128981, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128982, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128983, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {128984, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129024, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129025, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129026, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129027, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129028, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129029, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129030, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129031, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129032, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129033, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129034, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129035, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129040, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129041, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129042, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129043, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129044, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129045, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129046, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129047, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129048, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129049, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129050, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129051, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129052, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129053, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129054, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129055, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129056, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129057, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129058, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129059, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129060, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129061, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129062, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129063, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129064, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129065, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129066, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129067, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129068, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129069, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129070, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129071, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129072, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129073, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129074, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129075, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129076, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129077, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129078, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129079, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129080, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129081, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129082, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129083, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129084, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129085, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129086, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129087, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129088, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129089, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129090, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129091, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129092, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129093, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129094, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129095, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129104, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129105, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129106, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129107, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129108, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129109, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129110, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129111, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129112, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129113, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129120, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129121, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129122, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129123, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129124, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129125, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129126, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129127, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129128, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129129, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129130, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129131, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129132, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129133, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129134, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129135, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129136, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129137, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129138, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129139, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129140, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129141, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129142, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129143, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129144, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129145, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129146, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129147, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129148, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129149, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129150, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129151, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129152, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129153, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129154, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129155, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129156, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129157, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129158, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129159, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129168, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129169, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129170, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129171, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129172, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129173, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129174, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129175, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129176, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129177, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129178, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129179, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129180, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129181, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129182, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129183, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129184, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129185, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129186, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129187, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129188, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129189, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129190, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129191, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129192, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129193, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129194, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129195, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129196, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129197, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129280, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129281, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129282, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129283, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129284, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129285, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129286, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129287, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129288, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129289, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129290, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129291, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129296, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129297, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129298, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129299, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129300, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129301, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129302, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129303, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129304, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129305, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129306, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129307, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129308, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129309, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129310, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129311, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129312, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129313, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129314, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129315, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129316, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129317, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129318, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129319, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129320, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129321, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129322, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129323, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129324, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129325, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129326, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129327, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129328, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129329, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129330, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129331, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129332, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129333, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129334, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129335, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129336, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129337, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129338, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129339, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129340, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129341, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129342, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129344, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129345, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129346, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129347, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129348, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129349, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129350, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129351, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129352, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129353, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129354, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129355, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129356, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129357, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129358, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129359, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129360, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129361, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129362, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129363, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129364, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129365, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129366, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129367, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129368, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129369, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129370, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129371, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129372, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129373, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129374, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129375, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129376, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129377, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129378, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129379, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129380, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129381, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129382, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129383, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129384, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129385, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129386, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129387, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129388, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129389, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129390, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129391, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129392, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129395, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129396, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129397, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129398, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129402, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129404, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129405, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129406, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129407, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129408, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129409, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129410, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129411, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129412, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129413, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129414, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129415, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129416, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129417, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129418, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129419, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129420, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129421, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129422, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129423, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129424, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129425, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129426, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129427, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129428, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129429, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129430, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129431, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129432, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129433, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129434, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129435, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129436, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129437, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129438, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129439, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129440, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129441, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129442, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129456, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129457, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129458, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129459, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129460, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129461, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129462, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129463, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129464, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129465, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129472, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129473, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129474, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129488, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129489, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129490, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129491, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129492, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129493, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129494, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129495, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129496, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129497, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129498, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129499, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129500, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129501, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129502, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129503, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129504, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129505, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129506, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129507, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129508, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129509, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129510, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129511, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129512, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129513, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129514, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129515, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129516, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129517, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129518, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129519, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129520, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129521, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129522, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129523, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129524, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129525, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129526, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129527, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129528, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129529, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129530, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129531, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129532, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129533, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129534, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129535, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129632, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129633, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129634, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129635, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129636, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129637, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129638, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129639, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129640, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129641, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129642, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129643, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129644, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {129645, Unicode::Category_Symbol_Other, Unicode::Direction_Other_Neutral}, + {194560, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194561, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194562, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194563, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194564, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194565, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194566, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194567, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194568, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194569, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194570, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194571, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194572, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194573, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194574, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194575, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194576, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194577, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194578, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194579, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194580, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194581, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194582, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194583, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194584, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194585, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194586, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194587, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194588, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194589, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194590, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194591, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194592, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194593, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194594, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194595, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194596, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194597, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194598, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194599, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194600, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194601, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194602, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194603, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194604, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194605, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194606, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194607, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194608, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194609, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194610, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194611, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194612, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194613, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194614, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194615, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194616, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194617, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194618, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194619, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194620, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194621, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194622, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194623, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194624, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194625, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194626, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194627, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194628, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194629, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194630, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194631, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194632, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194633, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194634, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194635, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194636, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194637, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194638, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194639, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194640, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194641, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194642, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194643, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194644, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194645, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194646, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194647, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194648, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194649, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194650, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194651, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194652, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194653, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194654, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194655, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194656, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194657, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194658, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194659, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194660, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194661, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194662, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194663, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194664, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194665, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194666, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194667, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194668, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194669, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194670, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194671, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194672, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194673, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194674, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194675, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194676, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194677, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194678, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194679, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194680, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194681, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194682, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194683, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194684, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194685, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194686, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194687, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194688, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194689, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194690, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194691, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194692, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194693, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194694, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194695, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194696, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194697, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194698, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194699, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194700, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194701, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194702, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194703, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194704, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194705, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194706, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194707, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194708, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194709, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194710, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194711, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194712, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194713, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194714, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194715, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194716, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194717, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194718, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194719, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194720, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194721, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194722, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194723, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194724, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194725, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194726, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194727, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194728, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194729, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194730, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194731, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194732, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194733, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194734, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194735, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194736, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194737, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194738, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194739, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194740, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194741, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194742, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194743, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194744, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194745, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194746, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194747, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194748, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194749, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194750, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194751, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194752, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194753, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194754, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194755, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194756, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194757, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194758, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194759, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194760, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194761, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194762, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194763, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194764, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194765, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194766, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194767, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194768, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194769, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194770, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194771, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194772, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194773, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194774, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194775, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194776, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194777, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194778, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194779, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194780, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194781, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194782, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194783, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194784, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194785, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194786, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194787, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194788, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194789, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194790, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194791, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194792, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194793, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194794, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194795, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194796, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194797, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194798, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194799, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194800, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194801, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194802, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194803, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194804, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194805, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194806, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194807, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194808, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194809, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194810, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194811, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194812, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194813, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194814, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194815, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194816, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194817, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194818, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194819, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194820, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194821, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194822, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194823, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194825, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194826, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194827, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194828, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194829, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194830, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194831, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194832, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194833, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194834, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194835, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194836, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194837, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194838, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194839, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194840, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194841, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194842, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194843, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194844, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194845, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194846, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194847, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194848, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194849, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194850, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194851, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194852, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194853, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194854, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194855, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194856, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194857, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194858, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194859, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194860, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194861, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194862, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194863, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194864, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194865, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194866, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194867, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194868, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194869, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194870, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194871, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194872, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194873, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194874, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194875, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194876, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194877, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194878, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194879, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194880, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194881, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194882, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194883, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194884, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194885, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194886, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194887, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194888, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194889, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194890, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194891, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194892, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194893, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194894, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194895, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194896, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194897, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194898, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194899, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194900, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194901, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194902, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194903, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194904, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194905, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194906, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194907, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194908, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194909, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194910, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194911, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194912, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194913, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194914, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194915, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194916, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194917, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194918, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194919, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194920, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194921, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194922, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194923, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194924, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194925, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194926, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194927, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194928, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194929, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194930, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194931, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194932, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194933, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194934, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194935, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194936, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194937, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194938, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194939, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194940, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194941, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194942, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194943, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194944, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194945, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194946, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194947, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194948, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194949, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194950, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194951, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194952, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194953, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194954, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194955, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194956, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194957, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194958, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194959, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194960, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194961, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194962, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194963, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194964, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194965, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194966, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194967, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194969, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194970, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194971, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194972, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194973, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194974, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194975, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194976, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194977, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194978, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194979, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194980, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194981, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194982, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194983, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194985, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194986, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194987, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194988, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194989, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194990, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194991, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194992, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194993, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194994, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194995, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194996, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194997, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194998, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {194999, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195000, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195001, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195002, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195003, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195004, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195005, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195006, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195007, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195008, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195009, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195010, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195011, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195012, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195013, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195014, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195015, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195016, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195017, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195018, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195019, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195020, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195021, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195022, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195023, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195024, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195025, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195026, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195027, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195028, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195029, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195030, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195031, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195033, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195034, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195035, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195036, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195037, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195038, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195039, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195040, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195041, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195042, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195043, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195044, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195045, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195046, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195047, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195048, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195049, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195050, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195051, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195052, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195053, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195054, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195055, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195056, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195057, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195058, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195059, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195060, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195061, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195062, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195063, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195064, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195065, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195066, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195067, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195068, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195069, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195070, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195071, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195073, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195074, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195075, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195076, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195077, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195078, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195079, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195080, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195081, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195082, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195083, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195084, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195085, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195086, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195087, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195088, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195089, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195090, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195091, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195092, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195093, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195094, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195095, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195096, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195097, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195098, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195099, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195100, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {195101, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}, + {917505, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917536, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917537, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917538, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917539, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917540, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917541, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917542, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917543, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917544, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917545, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917546, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917547, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917548, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917549, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917550, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917551, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917552, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917553, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917554, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917555, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917556, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917557, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917558, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917559, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917560, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917561, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917562, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917563, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917564, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917565, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917566, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917567, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917568, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917569, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917570, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917571, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917572, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917573, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917574, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917575, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917576, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917577, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917578, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917579, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917580, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917581, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917582, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917583, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917584, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917585, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917586, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917587, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917588, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917589, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917590, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917591, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917592, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917593, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917594, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917595, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917596, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917597, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917598, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917599, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917600, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917601, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917602, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917603, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917604, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917605, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917606, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917607, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917608, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917609, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917610, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917611, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917612, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917613, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917614, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917615, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917616, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917617, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917618, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917619, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917620, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917621, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917622, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917623, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917624, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917625, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917626, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917627, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917628, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917629, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917630, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917631, Unicode::Category_Other_Format, Unicode::Direction_Boundary_Neutral}, + {917760, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917761, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917762, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917763, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917764, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917765, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917766, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917767, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917768, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917769, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917770, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917771, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917772, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917773, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917774, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917775, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917776, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917777, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917778, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917779, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917780, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917781, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917782, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917783, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917784, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917785, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917786, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917787, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917788, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917789, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917790, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917791, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917792, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917793, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917794, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917795, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917796, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917797, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917798, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917799, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917800, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917801, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917802, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917803, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917804, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917805, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917806, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917807, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917808, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917809, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917810, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917811, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917812, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917813, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917814, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917815, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917816, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917817, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917818, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917819, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917820, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917821, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917822, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917823, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917824, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917825, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917826, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917827, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917828, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917829, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917830, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917831, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917832, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917833, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917834, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917835, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917836, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917837, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917838, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917839, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917840, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917841, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917842, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917843, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917844, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917845, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917846, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917847, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917848, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917849, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917850, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917851, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917852, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917853, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917854, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917855, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917856, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917857, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917858, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917859, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917860, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917861, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917862, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917863, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917864, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917865, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917866, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917867, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917868, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917869, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917870, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917871, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917872, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917873, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917874, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917875, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917876, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917877, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917878, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917879, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917880, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917881, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917882, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917883, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917884, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917885, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917886, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917887, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917888, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917889, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917890, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917891, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917892, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917893, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917894, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917895, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917896, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917897, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917898, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917899, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917900, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917901, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917902, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917903, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917904, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917905, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917906, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917907, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917908, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917909, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917910, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917911, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917912, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917913, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917914, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917915, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917916, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917917, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917918, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917919, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917920, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917921, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917922, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917923, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917924, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917925, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917926, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917927, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917928, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917929, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917930, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917931, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917932, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917933, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917934, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917935, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917936, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917937, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917938, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917939, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917940, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917941, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917942, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917943, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917944, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917945, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917946, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917947, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917948, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917949, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917950, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917951, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917952, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917953, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917954, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917955, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917956, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917957, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917958, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917959, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917960, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917961, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917962, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917963, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917964, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917965, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917966, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917967, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917968, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917969, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917970, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917971, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917972, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917973, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917974, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917975, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917976, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917977, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917978, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917979, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917980, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917981, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917982, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917983, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917984, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917985, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917986, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917987, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917988, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917989, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917990, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917991, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917992, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917993, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917994, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917995, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917996, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917997, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917998, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, + {917999, Unicode::Category_Mark_NonSpacing, Unicode::Direction_Nonspacing_Mark}, +}; + +UnicodeSet unicodeSets[15] = { + {13312, 19893, {13312, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}}, + {19968, 40943, {19968, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}}, + {44032, 55203, {44032, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}}, + {55296, 56191, {55296, Unicode::Category_Other_Surrogate, Unicode::Direction_Left_To_Right}}, + {56192, 56319, {56192, Unicode::Category_Other_Surrogate, Unicode::Direction_Left_To_Right}}, + {56320, 57343, {56320, Unicode::Category_Other_Surrogate, Unicode::Direction_Left_To_Right}}, + {57344, 63743, {57344, Unicode::Category_Other_PrivateUse, Unicode::Direction_Left_To_Right}}, + {94208, 100337, {94208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}}, + {131072, 173782, {131072, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}}, + {173824, 177972, {173824, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}}, + {177984, 178205, {177984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}}, + {178208, 183969, {178208, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}}, + {183984, 191456, {183984, Unicode::Category_Letter_Other, Unicode::Direction_Left_To_Right}}, + {983040, 1048573, {983040, Unicode::Category_Other_PrivateUse, Unicode::Direction_Left_To_Right}}, + {1048576, 1114109, {1048576, Unicode::Category_Other_PrivateUse, Unicode::Direction_Left_To_Right}}, +}; + +UnicodeCharacterSimpleMapping unicodeLower[1383] = { + {65, 97}, + {66, 98}, + {67, 99}, + {68, 100}, + {69, 101}, + {70, 102}, + {71, 103}, + {72, 104}, + {73, 105}, + {74, 106}, + {75, 107}, + {76, 108}, + {77, 109}, + {78, 110}, + {79, 111}, + {80, 112}, + {81, 113}, + {82, 114}, + {83, 115}, + {84, 116}, + {85, 117}, + {86, 118}, + {87, 119}, + {88, 120}, + {89, 121}, + {90, 122}, + {192, 224}, + {193, 225}, + {194, 226}, + {195, 227}, + {196, 228}, + {197, 229}, + {198, 230}, + {199, 231}, + {200, 232}, + {201, 233}, + {202, 234}, + {203, 235}, + {204, 236}, + {205, 237}, + {206, 238}, + {207, 239}, + {208, 240}, + {209, 241}, + {210, 242}, + {211, 243}, + {212, 244}, + {213, 245}, + {214, 246}, + {216, 248}, + {217, 249}, + {218, 250}, + {219, 251}, + {220, 252}, + {221, 253}, + {222, 254}, + {256, 257}, + {258, 259}, + {260, 261}, + {262, 263}, + {264, 265}, + {266, 267}, + {268, 269}, + {270, 271}, + {272, 273}, + {274, 275}, + {276, 277}, + {278, 279}, + {280, 281}, + {282, 283}, + {284, 285}, + {286, 287}, + {288, 289}, + {290, 291}, + {292, 293}, + {294, 295}, + {296, 297}, + {298, 299}, + {300, 301}, + {302, 303}, + {304, 105}, + {306, 307}, + {308, 309}, + {310, 311}, + {313, 314}, + {315, 316}, + {317, 318}, + {319, 320}, + {321, 322}, + {323, 324}, + {325, 326}, + {327, 328}, + {330, 331}, + {332, 333}, + {334, 335}, + {336, 337}, + {338, 339}, + {340, 341}, + {342, 343}, + {344, 345}, + {346, 347}, + {348, 349}, + {350, 351}, + {352, 353}, + {354, 355}, + {356, 357}, + {358, 359}, + {360, 361}, + {362, 363}, + {364, 365}, + {366, 367}, + {368, 369}, + {370, 371}, + {372, 373}, + {374, 375}, + {376, 255}, + {377, 378}, + {379, 380}, + {381, 382}, + {385, 595}, + {386, 387}, + {388, 389}, + {390, 596}, + {391, 392}, + {393, 598}, + {394, 599}, + {395, 396}, + {398, 477}, + {399, 601}, + {400, 603}, + {401, 402}, + {403, 608}, + {404, 611}, + {406, 617}, + {407, 616}, + {408, 409}, + {412, 623}, + {413, 626}, + {415, 629}, + {416, 417}, + {418, 419}, + {420, 421}, + {422, 640}, + {423, 424}, + {425, 643}, + {428, 429}, + {430, 648}, + {431, 432}, + {433, 650}, + {434, 651}, + {435, 436}, + {437, 438}, + {439, 658}, + {440, 441}, + {444, 445}, + {452, 454}, + {453, 454}, + {455, 457}, + {456, 457}, + {458, 460}, + {459, 460}, + {461, 462}, + {463, 464}, + {465, 466}, + {467, 468}, + {469, 470}, + {471, 472}, + {473, 474}, + {475, 476}, + {478, 479}, + {480, 481}, + {482, 483}, + {484, 485}, + {486, 487}, + {488, 489}, + {490, 491}, + {492, 493}, + {494, 495}, + {497, 499}, + {498, 499}, + {500, 501}, + {502, 405}, + {503, 447}, + {504, 505}, + {506, 507}, + {508, 509}, + {510, 511}, + {512, 513}, + {514, 515}, + {516, 517}, + {518, 519}, + {520, 521}, + {522, 523}, + {524, 525}, + {526, 527}, + {528, 529}, + {530, 531}, + {532, 533}, + {534, 535}, + {536, 537}, + {538, 539}, + {540, 541}, + {542, 543}, + {544, 414}, + {546, 547}, + {548, 549}, + {550, 551}, + {552, 553}, + {554, 555}, + {556, 557}, + {558, 559}, + {560, 561}, + {562, 563}, + {570, 11365}, + {571, 572}, + {573, 410}, + {574, 11366}, + {577, 578}, + {579, 384}, + {580, 649}, + {581, 652}, + {582, 583}, + {584, 585}, + {586, 587}, + {588, 589}, + {590, 591}, + {880, 881}, + {882, 883}, + {886, 887}, + {895, 1011}, + {902, 940}, + {904, 941}, + {905, 942}, + {906, 943}, + {908, 972}, + {910, 973}, + {911, 974}, + {913, 945}, + {914, 946}, + {915, 947}, + {916, 948}, + {917, 949}, + {918, 950}, + {919, 951}, + {920, 952}, + {921, 953}, + {922, 954}, + {923, 955}, + {924, 956}, + {925, 957}, + {926, 958}, + {927, 959}, + {928, 960}, + {929, 961}, + {931, 963}, + {932, 964}, + {933, 965}, + {934, 966}, + {935, 967}, + {936, 968}, + {937, 969}, + {938, 970}, + {939, 971}, + {975, 983}, + {984, 985}, + {986, 987}, + {988, 989}, + {990, 991}, + {992, 993}, + {994, 995}, + {996, 997}, + {998, 999}, + {1000, 1001}, + {1002, 1003}, + {1004, 1005}, + {1006, 1007}, + {1012, 952}, + {1015, 1016}, + {1017, 1010}, + {1018, 1019}, + {1021, 891}, + {1022, 892}, + {1023, 893}, + {1024, 1104}, + {1025, 1105}, + {1026, 1106}, + {1027, 1107}, + {1028, 1108}, + {1029, 1109}, + {1030, 1110}, + {1031, 1111}, + {1032, 1112}, + {1033, 1113}, + {1034, 1114}, + {1035, 1115}, + {1036, 1116}, + {1037, 1117}, + {1038, 1118}, + {1039, 1119}, + {1040, 1072}, + {1041, 1073}, + {1042, 1074}, + {1043, 1075}, + {1044, 1076}, + {1045, 1077}, + {1046, 1078}, + {1047, 1079}, + {1048, 1080}, + {1049, 1081}, + {1050, 1082}, + {1051, 1083}, + {1052, 1084}, + {1053, 1085}, + {1054, 1086}, + {1055, 1087}, + {1056, 1088}, + {1057, 1089}, + {1058, 1090}, + {1059, 1091}, + {1060, 1092}, + {1061, 1093}, + {1062, 1094}, + {1063, 1095}, + {1064, 1096}, + {1065, 1097}, + {1066, 1098}, + {1067, 1099}, + {1068, 1100}, + {1069, 1101}, + {1070, 1102}, + {1071, 1103}, + {1120, 1121}, + {1122, 1123}, + {1124, 1125}, + {1126, 1127}, + {1128, 1129}, + {1130, 1131}, + {1132, 1133}, + {1134, 1135}, + {1136, 1137}, + {1138, 1139}, + {1140, 1141}, + {1142, 1143}, + {1144, 1145}, + {1146, 1147}, + {1148, 1149}, + {1150, 1151}, + {1152, 1153}, + {1162, 1163}, + {1164, 1165}, + {1166, 1167}, + {1168, 1169}, + {1170, 1171}, + {1172, 1173}, + {1174, 1175}, + {1176, 1177}, + {1178, 1179}, + {1180, 1181}, + {1182, 1183}, + {1184, 1185}, + {1186, 1187}, + {1188, 1189}, + {1190, 1191}, + {1192, 1193}, + {1194, 1195}, + {1196, 1197}, + {1198, 1199}, + {1200, 1201}, + {1202, 1203}, + {1204, 1205}, + {1206, 1207}, + {1208, 1209}, + {1210, 1211}, + {1212, 1213}, + {1214, 1215}, + {1216, 1231}, + {1217, 1218}, + {1219, 1220}, + {1221, 1222}, + {1223, 1224}, + {1225, 1226}, + {1227, 1228}, + {1229, 1230}, + {1232, 1233}, + {1234, 1235}, + {1236, 1237}, + {1238, 1239}, + {1240, 1241}, + {1242, 1243}, + {1244, 1245}, + {1246, 1247}, + {1248, 1249}, + {1250, 1251}, + {1252, 1253}, + {1254, 1255}, + {1256, 1257}, + {1258, 1259}, + {1260, 1261}, + {1262, 1263}, + {1264, 1265}, + {1266, 1267}, + {1268, 1269}, + {1270, 1271}, + {1272, 1273}, + {1274, 1275}, + {1276, 1277}, + {1278, 1279}, + {1280, 1281}, + {1282, 1283}, + {1284, 1285}, + {1286, 1287}, + {1288, 1289}, + {1290, 1291}, + {1292, 1293}, + {1294, 1295}, + {1296, 1297}, + {1298, 1299}, + {1300, 1301}, + {1302, 1303}, + {1304, 1305}, + {1306, 1307}, + {1308, 1309}, + {1310, 1311}, + {1312, 1313}, + {1314, 1315}, + {1316, 1317}, + {1318, 1319}, + {1320, 1321}, + {1322, 1323}, + {1324, 1325}, + {1326, 1327}, + {1329, 1377}, + {1330, 1378}, + {1331, 1379}, + {1332, 1380}, + {1333, 1381}, + {1334, 1382}, + {1335, 1383}, + {1336, 1384}, + {1337, 1385}, + {1338, 1386}, + {1339, 1387}, + {1340, 1388}, + {1341, 1389}, + {1342, 1390}, + {1343, 1391}, + {1344, 1392}, + {1345, 1393}, + {1346, 1394}, + {1347, 1395}, + {1348, 1396}, + {1349, 1397}, + {1350, 1398}, + {1351, 1399}, + {1352, 1400}, + {1353, 1401}, + {1354, 1402}, + {1355, 1403}, + {1356, 1404}, + {1357, 1405}, + {1358, 1406}, + {1359, 1407}, + {1360, 1408}, + {1361, 1409}, + {1362, 1410}, + {1363, 1411}, + {1364, 1412}, + {1365, 1413}, + {1366, 1414}, + {4256, 11520}, + {4257, 11521}, + {4258, 11522}, + {4259, 11523}, + {4260, 11524}, + {4261, 11525}, + {4262, 11526}, + {4263, 11527}, + {4264, 11528}, + {4265, 11529}, + {4266, 11530}, + {4267, 11531}, + {4268, 11532}, + {4269, 11533}, + {4270, 11534}, + {4271, 11535}, + {4272, 11536}, + {4273, 11537}, + {4274, 11538}, + {4275, 11539}, + {4276, 11540}, + {4277, 11541}, + {4278, 11542}, + {4279, 11543}, + {4280, 11544}, + {4281, 11545}, + {4282, 11546}, + {4283, 11547}, + {4284, 11548}, + {4285, 11549}, + {4286, 11550}, + {4287, 11551}, + {4288, 11552}, + {4289, 11553}, + {4290, 11554}, + {4291, 11555}, + {4292, 11556}, + {4293, 11557}, + {4295, 11559}, + {4301, 11565}, + {5024, 43888}, + {5025, 43889}, + {5026, 43890}, + {5027, 43891}, + {5028, 43892}, + {5029, 43893}, + {5030, 43894}, + {5031, 43895}, + {5032, 43896}, + {5033, 43897}, + {5034, 43898}, + {5035, 43899}, + {5036, 43900}, + {5037, 43901}, + {5038, 43902}, + {5039, 43903}, + {5040, 43904}, + {5041, 43905}, + {5042, 43906}, + {5043, 43907}, + {5044, 43908}, + {5045, 43909}, + {5046, 43910}, + {5047, 43911}, + {5048, 43912}, + {5049, 43913}, + {5050, 43914}, + {5051, 43915}, + {5052, 43916}, + {5053, 43917}, + {5054, 43918}, + {5055, 43919}, + {5056, 43920}, + {5057, 43921}, + {5058, 43922}, + {5059, 43923}, + {5060, 43924}, + {5061, 43925}, + {5062, 43926}, + {5063, 43927}, + {5064, 43928}, + {5065, 43929}, + {5066, 43930}, + {5067, 43931}, + {5068, 43932}, + {5069, 43933}, + {5070, 43934}, + {5071, 43935}, + {5072, 43936}, + {5073, 43937}, + {5074, 43938}, + {5075, 43939}, + {5076, 43940}, + {5077, 43941}, + {5078, 43942}, + {5079, 43943}, + {5080, 43944}, + {5081, 43945}, + {5082, 43946}, + {5083, 43947}, + {5084, 43948}, + {5085, 43949}, + {5086, 43950}, + {5087, 43951}, + {5088, 43952}, + {5089, 43953}, + {5090, 43954}, + {5091, 43955}, + {5092, 43956}, + {5093, 43957}, + {5094, 43958}, + {5095, 43959}, + {5096, 43960}, + {5097, 43961}, + {5098, 43962}, + {5099, 43963}, + {5100, 43964}, + {5101, 43965}, + {5102, 43966}, + {5103, 43967}, + {5104, 5112}, + {5105, 5113}, + {5106, 5114}, + {5107, 5115}, + {5108, 5116}, + {5109, 5117}, + {7312, 4304}, + {7313, 4305}, + {7314, 4306}, + {7315, 4307}, + {7316, 4308}, + {7317, 4309}, + {7318, 4310}, + {7319, 4311}, + {7320, 4312}, + {7321, 4313}, + {7322, 4314}, + {7323, 4315}, + {7324, 4316}, + {7325, 4317}, + {7326, 4318}, + {7327, 4319}, + {7328, 4320}, + {7329, 4321}, + {7330, 4322}, + {7331, 4323}, + {7332, 4324}, + {7333, 4325}, + {7334, 4326}, + {7335, 4327}, + {7336, 4328}, + {7337, 4329}, + {7338, 4330}, + {7339, 4331}, + {7340, 4332}, + {7341, 4333}, + {7342, 4334}, + {7343, 4335}, + {7344, 4336}, + {7345, 4337}, + {7346, 4338}, + {7347, 4339}, + {7348, 4340}, + {7349, 4341}, + {7350, 4342}, + {7351, 4343}, + {7352, 4344}, + {7353, 4345}, + {7354, 4346}, + {7357, 4349}, + {7358, 4350}, + {7359, 4351}, + {7680, 7681}, + {7682, 7683}, + {7684, 7685}, + {7686, 7687}, + {7688, 7689}, + {7690, 7691}, + {7692, 7693}, + {7694, 7695}, + {7696, 7697}, + {7698, 7699}, + {7700, 7701}, + {7702, 7703}, + {7704, 7705}, + {7706, 7707}, + {7708, 7709}, + {7710, 7711}, + {7712, 7713}, + {7714, 7715}, + {7716, 7717}, + {7718, 7719}, + {7720, 7721}, + {7722, 7723}, + {7724, 7725}, + {7726, 7727}, + {7728, 7729}, + {7730, 7731}, + {7732, 7733}, + {7734, 7735}, + {7736, 7737}, + {7738, 7739}, + {7740, 7741}, + {7742, 7743}, + {7744, 7745}, + {7746, 7747}, + {7748, 7749}, + {7750, 7751}, + {7752, 7753}, + {7754, 7755}, + {7756, 7757}, + {7758, 7759}, + {7760, 7761}, + {7762, 7763}, + {7764, 7765}, + {7766, 7767}, + {7768, 7769}, + {7770, 7771}, + {7772, 7773}, + {7774, 7775}, + {7776, 7777}, + {7778, 7779}, + {7780, 7781}, + {7782, 7783}, + {7784, 7785}, + {7786, 7787}, + {7788, 7789}, + {7790, 7791}, + {7792, 7793}, + {7794, 7795}, + {7796, 7797}, + {7798, 7799}, + {7800, 7801}, + {7802, 7803}, + {7804, 7805}, + {7806, 7807}, + {7808, 7809}, + {7810, 7811}, + {7812, 7813}, + {7814, 7815}, + {7816, 7817}, + {7818, 7819}, + {7820, 7821}, + {7822, 7823}, + {7824, 7825}, + {7826, 7827}, + {7828, 7829}, + {7838, 223}, + {7840, 7841}, + {7842, 7843}, + {7844, 7845}, + {7846, 7847}, + {7848, 7849}, + {7850, 7851}, + {7852, 7853}, + {7854, 7855}, + {7856, 7857}, + {7858, 7859}, + {7860, 7861}, + {7862, 7863}, + {7864, 7865}, + {7866, 7867}, + {7868, 7869}, + {7870, 7871}, + {7872, 7873}, + {7874, 7875}, + {7876, 7877}, + {7878, 7879}, + {7880, 7881}, + {7882, 7883}, + {7884, 7885}, + {7886, 7887}, + {7888, 7889}, + {7890, 7891}, + {7892, 7893}, + {7894, 7895}, + {7896, 7897}, + {7898, 7899}, + {7900, 7901}, + {7902, 7903}, + {7904, 7905}, + {7906, 7907}, + {7908, 7909}, + {7910, 7911}, + {7912, 7913}, + {7914, 7915}, + {7916, 7917}, + {7918, 7919}, + {7920, 7921}, + {7922, 7923}, + {7924, 7925}, + {7926, 7927}, + {7928, 7929}, + {7930, 7931}, + {7932, 7933}, + {7934, 7935}, + {7944, 7936}, + {7945, 7937}, + {7946, 7938}, + {7947, 7939}, + {7948, 7940}, + {7949, 7941}, + {7950, 7942}, + {7951, 7943}, + {7960, 7952}, + {7961, 7953}, + {7962, 7954}, + {7963, 7955}, + {7964, 7956}, + {7965, 7957}, + {7976, 7968}, + {7977, 7969}, + {7978, 7970}, + {7979, 7971}, + {7980, 7972}, + {7981, 7973}, + {7982, 7974}, + {7983, 7975}, + {7992, 7984}, + {7993, 7985}, + {7994, 7986}, + {7995, 7987}, + {7996, 7988}, + {7997, 7989}, + {7998, 7990}, + {7999, 7991}, + {8008, 8000}, + {8009, 8001}, + {8010, 8002}, + {8011, 8003}, + {8012, 8004}, + {8013, 8005}, + {8025, 8017}, + {8027, 8019}, + {8029, 8021}, + {8031, 8023}, + {8040, 8032}, + {8041, 8033}, + {8042, 8034}, + {8043, 8035}, + {8044, 8036}, + {8045, 8037}, + {8046, 8038}, + {8047, 8039}, + {8072, 8064}, + {8073, 8065}, + {8074, 8066}, + {8075, 8067}, + {8076, 8068}, + {8077, 8069}, + {8078, 8070}, + {8079, 8071}, + {8088, 8080}, + {8089, 8081}, + {8090, 8082}, + {8091, 8083}, + {8092, 8084}, + {8093, 8085}, + {8094, 8086}, + {8095, 8087}, + {8104, 8096}, + {8105, 8097}, + {8106, 8098}, + {8107, 8099}, + {8108, 8100}, + {8109, 8101}, + {8110, 8102}, + {8111, 8103}, + {8120, 8112}, + {8121, 8113}, + {8122, 8048}, + {8123, 8049}, + {8124, 8115}, + {8136, 8050}, + {8137, 8051}, + {8138, 8052}, + {8139, 8053}, + {8140, 8131}, + {8152, 8144}, + {8153, 8145}, + {8154, 8054}, + {8155, 8055}, + {8168, 8160}, + {8169, 8161}, + {8170, 8058}, + {8171, 8059}, + {8172, 8165}, + {8184, 8056}, + {8185, 8057}, + {8186, 8060}, + {8187, 8061}, + {8188, 8179}, + {8486, 969}, + {8490, 107}, + {8491, 229}, + {8498, 8526}, + {8544, 8560}, + {8545, 8561}, + {8546, 8562}, + {8547, 8563}, + {8548, 8564}, + {8549, 8565}, + {8550, 8566}, + {8551, 8567}, + {8552, 8568}, + {8553, 8569}, + {8554, 8570}, + {8555, 8571}, + {8556, 8572}, + {8557, 8573}, + {8558, 8574}, + {8559, 8575}, + {8579, 8580}, + {9398, 9424}, + {9399, 9425}, + {9400, 9426}, + {9401, 9427}, + {9402, 9428}, + {9403, 9429}, + {9404, 9430}, + {9405, 9431}, + {9406, 9432}, + {9407, 9433}, + {9408, 9434}, + {9409, 9435}, + {9410, 9436}, + {9411, 9437}, + {9412, 9438}, + {9413, 9439}, + {9414, 9440}, + {9415, 9441}, + {9416, 9442}, + {9417, 9443}, + {9418, 9444}, + {9419, 9445}, + {9420, 9446}, + {9421, 9447}, + {9422, 9448}, + {9423, 9449}, + {11264, 11312}, + {11265, 11313}, + {11266, 11314}, + {11267, 11315}, + {11268, 11316}, + {11269, 11317}, + {11270, 11318}, + {11271, 11319}, + {11272, 11320}, + {11273, 11321}, + {11274, 11322}, + {11275, 11323}, + {11276, 11324}, + {11277, 11325}, + {11278, 11326}, + {11279, 11327}, + {11280, 11328}, + {11281, 11329}, + {11282, 11330}, + {11283, 11331}, + {11284, 11332}, + {11285, 11333}, + {11286, 11334}, + {11287, 11335}, + {11288, 11336}, + {11289, 11337}, + {11290, 11338}, + {11291, 11339}, + {11292, 11340}, + {11293, 11341}, + {11294, 11342}, + {11295, 11343}, + {11296, 11344}, + {11297, 11345}, + {11298, 11346}, + {11299, 11347}, + {11300, 11348}, + {11301, 11349}, + {11302, 11350}, + {11303, 11351}, + {11304, 11352}, + {11305, 11353}, + {11306, 11354}, + {11307, 11355}, + {11308, 11356}, + {11309, 11357}, + {11310, 11358}, + {11360, 11361}, + {11362, 619}, + {11363, 7549}, + {11364, 637}, + {11367, 11368}, + {11369, 11370}, + {11371, 11372}, + {11373, 593}, + {11374, 625}, + {11375, 592}, + {11376, 594}, + {11378, 11379}, + {11381, 11382}, + {11390, 575}, + {11391, 576}, + {11392, 11393}, + {11394, 11395}, + {11396, 11397}, + {11398, 11399}, + {11400, 11401}, + {11402, 11403}, + {11404, 11405}, + {11406, 11407}, + {11408, 11409}, + {11410, 11411}, + {11412, 11413}, + {11414, 11415}, + {11416, 11417}, + {11418, 11419}, + {11420, 11421}, + {11422, 11423}, + {11424, 11425}, + {11426, 11427}, + {11428, 11429}, + {11430, 11431}, + {11432, 11433}, + {11434, 11435}, + {11436, 11437}, + {11438, 11439}, + {11440, 11441}, + {11442, 11443}, + {11444, 11445}, + {11446, 11447}, + {11448, 11449}, + {11450, 11451}, + {11452, 11453}, + {11454, 11455}, + {11456, 11457}, + {11458, 11459}, + {11460, 11461}, + {11462, 11463}, + {11464, 11465}, + {11466, 11467}, + {11468, 11469}, + {11470, 11471}, + {11472, 11473}, + {11474, 11475}, + {11476, 11477}, + {11478, 11479}, + {11480, 11481}, + {11482, 11483}, + {11484, 11485}, + {11486, 11487}, + {11488, 11489}, + {11490, 11491}, + {11499, 11500}, + {11501, 11502}, + {11506, 11507}, + {42560, 42561}, + {42562, 42563}, + {42564, 42565}, + {42566, 42567}, + {42568, 42569}, + {42570, 42571}, + {42572, 42573}, + {42574, 42575}, + {42576, 42577}, + {42578, 42579}, + {42580, 42581}, + {42582, 42583}, + {42584, 42585}, + {42586, 42587}, + {42588, 42589}, + {42590, 42591}, + {42592, 42593}, + {42594, 42595}, + {42596, 42597}, + {42598, 42599}, + {42600, 42601}, + {42602, 42603}, + {42604, 42605}, + {42624, 42625}, + {42626, 42627}, + {42628, 42629}, + {42630, 42631}, + {42632, 42633}, + {42634, 42635}, + {42636, 42637}, + {42638, 42639}, + {42640, 42641}, + {42642, 42643}, + {42644, 42645}, + {42646, 42647}, + {42648, 42649}, + {42650, 42651}, + {42786, 42787}, + {42788, 42789}, + {42790, 42791}, + {42792, 42793}, + {42794, 42795}, + {42796, 42797}, + {42798, 42799}, + {42802, 42803}, + {42804, 42805}, + {42806, 42807}, + {42808, 42809}, + {42810, 42811}, + {42812, 42813}, + {42814, 42815}, + {42816, 42817}, + {42818, 42819}, + {42820, 42821}, + {42822, 42823}, + {42824, 42825}, + {42826, 42827}, + {42828, 42829}, + {42830, 42831}, + {42832, 42833}, + {42834, 42835}, + {42836, 42837}, + {42838, 42839}, + {42840, 42841}, + {42842, 42843}, + {42844, 42845}, + {42846, 42847}, + {42848, 42849}, + {42850, 42851}, + {42852, 42853}, + {42854, 42855}, + {42856, 42857}, + {42858, 42859}, + {42860, 42861}, + {42862, 42863}, + {42873, 42874}, + {42875, 42876}, + {42877, 7545}, + {42878, 42879}, + {42880, 42881}, + {42882, 42883}, + {42884, 42885}, + {42886, 42887}, + {42891, 42892}, + {42893, 613}, + {42896, 42897}, + {42898, 42899}, + {42902, 42903}, + {42904, 42905}, + {42906, 42907}, + {42908, 42909}, + {42910, 42911}, + {42912, 42913}, + {42914, 42915}, + {42916, 42917}, + {42918, 42919}, + {42920, 42921}, + {42922, 614}, + {42923, 604}, + {42924, 609}, + {42925, 620}, + {42926, 618}, + {42928, 670}, + {42929, 647}, + {42930, 669}, + {42931, 43859}, + {42932, 42933}, + {42934, 42935}, + {42936, 42937}, + {65313, 65345}, + {65314, 65346}, + {65315, 65347}, + {65316, 65348}, + {65317, 65349}, + {65318, 65350}, + {65319, 65351}, + {65320, 65352}, + {65321, 65353}, + {65322, 65354}, + {65323, 65355}, + {65324, 65356}, + {65325, 65357}, + {65326, 65358}, + {65327, 65359}, + {65328, 65360}, + {65329, 65361}, + {65330, 65362}, + {65331, 65363}, + {65332, 65364}, + {65333, 65365}, + {65334, 65366}, + {65335, 65367}, + {65336, 65368}, + {65337, 65369}, + {65338, 65370}, + {66560, 66600}, + {66561, 66601}, + {66562, 66602}, + {66563, 66603}, + {66564, 66604}, + {66565, 66605}, + {66566, 66606}, + {66567, 66607}, + {66568, 66608}, + {66569, 66609}, + {66570, 66610}, + {66571, 66611}, + {66572, 66612}, + {66573, 66613}, + {66574, 66614}, + {66575, 66615}, + {66576, 66616}, + {66577, 66617}, + {66578, 66618}, + {66579, 66619}, + {66580, 66620}, + {66581, 66621}, + {66582, 66622}, + {66583, 66623}, + {66584, 66624}, + {66585, 66625}, + {66586, 66626}, + {66587, 66627}, + {66588, 66628}, + {66589, 66629}, + {66590, 66630}, + {66591, 66631}, + {66592, 66632}, + {66593, 66633}, + {66594, 66634}, + {66595, 66635}, + {66596, 66636}, + {66597, 66637}, + {66598, 66638}, + {66599, 66639}, + {66736, 66776}, + {66737, 66777}, + {66738, 66778}, + {66739, 66779}, + {66740, 66780}, + {66741, 66781}, + {66742, 66782}, + {66743, 66783}, + {66744, 66784}, + {66745, 66785}, + {66746, 66786}, + {66747, 66787}, + {66748, 66788}, + {66749, 66789}, + {66750, 66790}, + {66751, 66791}, + {66752, 66792}, + {66753, 66793}, + {66754, 66794}, + {66755, 66795}, + {66756, 66796}, + {66757, 66797}, + {66758, 66798}, + {66759, 66799}, + {66760, 66800}, + {66761, 66801}, + {66762, 66802}, + {66763, 66803}, + {66764, 66804}, + {66765, 66805}, + {66766, 66806}, + {66767, 66807}, + {66768, 66808}, + {66769, 66809}, + {66770, 66810}, + {66771, 66811}, + {68736, 68800}, + {68737, 68801}, + {68738, 68802}, + {68739, 68803}, + {68740, 68804}, + {68741, 68805}, + {68742, 68806}, + {68743, 68807}, + {68744, 68808}, + {68745, 68809}, + {68746, 68810}, + {68747, 68811}, + {68748, 68812}, + {68749, 68813}, + {68750, 68814}, + {68751, 68815}, + {68752, 68816}, + {68753, 68817}, + {68754, 68818}, + {68755, 68819}, + {68756, 68820}, + {68757, 68821}, + {68758, 68822}, + {68759, 68823}, + {68760, 68824}, + {68761, 68825}, + {68762, 68826}, + {68763, 68827}, + {68764, 68828}, + {68765, 68829}, + {68766, 68830}, + {68767, 68831}, + {68768, 68832}, + {68769, 68833}, + {68770, 68834}, + {68771, 68835}, + {68772, 68836}, + {68773, 68837}, + {68774, 68838}, + {68775, 68839}, + {68776, 68840}, + {68777, 68841}, + {68778, 68842}, + {68779, 68843}, + {68780, 68844}, + {68781, 68845}, + {68782, 68846}, + {68783, 68847}, + {68784, 68848}, + {68785, 68849}, + {68786, 68850}, + {71840, 71872}, + {71841, 71873}, + {71842, 71874}, + {71843, 71875}, + {71844, 71876}, + {71845, 71877}, + {71846, 71878}, + {71847, 71879}, + {71848, 71880}, + {71849, 71881}, + {71850, 71882}, + {71851, 71883}, + {71852, 71884}, + {71853, 71885}, + {71854, 71886}, + {71855, 71887}, + {71856, 71888}, + {71857, 71889}, + {71858, 71890}, + {71859, 71891}, + {71860, 71892}, + {71861, 71893}, + {71862, 71894}, + {71863, 71895}, + {71864, 71896}, + {71865, 71897}, + {71866, 71898}, + {71867, 71899}, + {71868, 71900}, + {71869, 71901}, + {71870, 71902}, + {71871, 71903}, + {93760, 93792}, + {93761, 93793}, + {93762, 93794}, + {93763, 93795}, + {93764, 93796}, + {93765, 93797}, + {93766, 93798}, + {93767, 93799}, + {93768, 93800}, + {93769, 93801}, + {93770, 93802}, + {93771, 93803}, + {93772, 93804}, + {93773, 93805}, + {93774, 93806}, + {93775, 93807}, + {93776, 93808}, + {93777, 93809}, + {93778, 93810}, + {93779, 93811}, + {93780, 93812}, + {93781, 93813}, + {93782, 93814}, + {93783, 93815}, + {93784, 93816}, + {93785, 93817}, + {93786, 93818}, + {93787, 93819}, + {93788, 93820}, + {93789, 93821}, + {93790, 93822}, + {93791, 93823}, + {125184, 125218}, + {125185, 125219}, + {125186, 125220}, + {125187, 125221}, + {125188, 125222}, + {125189, 125223}, + {125190, 125224}, + {125191, 125225}, + {125192, 125226}, + {125193, 125227}, + {125194, 125228}, + {125195, 125229}, + {125196, 125230}, + {125197, 125231}, + {125198, 125232}, + {125199, 125233}, + {125200, 125234}, + {125201, 125235}, + {125202, 125236}, + {125203, 125237}, + {125204, 125238}, + {125205, 125239}, + {125206, 125240}, + {125207, 125241}, + {125208, 125242}, + {125209, 125243}, + {125210, 125244}, + {125211, 125245}, + {125212, 125246}, + {125213, 125247}, + {125214, 125248}, + {125215, 125249}, + {125216, 125250}, + {125217, 125251}, +}; + +UnicodeCharacterSimpleMapping unicodeTitle[1404] = { + {97, 65}, + {98, 66}, + {99, 67}, + {100, 68}, + {101, 69}, + {102, 70}, + {103, 71}, + {104, 72}, + {105, 73}, + {106, 74}, + {107, 75}, + {108, 76}, + {109, 77}, + {110, 78}, + {111, 79}, + {112, 80}, + {113, 81}, + {114, 82}, + {115, 83}, + {116, 84}, + {117, 85}, + {118, 86}, + {119, 87}, + {120, 88}, + {121, 89}, + {122, 90}, + {181, 924}, + {224, 192}, + {225, 193}, + {226, 194}, + {227, 195}, + {228, 196}, + {229, 197}, + {230, 198}, + {231, 199}, + {232, 200}, + {233, 201}, + {234, 202}, + {235, 203}, + {236, 204}, + {237, 205}, + {238, 206}, + {239, 207}, + {240, 208}, + {241, 209}, + {242, 210}, + {243, 211}, + {244, 212}, + {245, 213}, + {246, 214}, + {248, 216}, + {249, 217}, + {250, 218}, + {251, 219}, + {252, 220}, + {253, 221}, + {254, 222}, + {255, 376}, + {257, 256}, + {259, 258}, + {261, 260}, + {263, 262}, + {265, 264}, + {267, 266}, + {269, 268}, + {271, 270}, + {273, 272}, + {275, 274}, + {277, 276}, + {279, 278}, + {281, 280}, + {283, 282}, + {285, 284}, + {287, 286}, + {289, 288}, + {291, 290}, + {293, 292}, + {295, 294}, + {297, 296}, + {299, 298}, + {301, 300}, + {303, 302}, + {305, 73}, + {307, 306}, + {309, 308}, + {311, 310}, + {314, 313}, + {316, 315}, + {318, 317}, + {320, 319}, + {322, 321}, + {324, 323}, + {326, 325}, + {328, 327}, + {331, 330}, + {333, 332}, + {335, 334}, + {337, 336}, + {339, 338}, + {341, 340}, + {343, 342}, + {345, 344}, + {347, 346}, + {349, 348}, + {351, 350}, + {353, 352}, + {355, 354}, + {357, 356}, + {359, 358}, + {361, 360}, + {363, 362}, + {365, 364}, + {367, 366}, + {369, 368}, + {371, 370}, + {373, 372}, + {375, 374}, + {378, 377}, + {380, 379}, + {382, 381}, + {383, 83}, + {384, 579}, + {387, 386}, + {389, 388}, + {392, 391}, + {396, 395}, + {402, 401}, + {405, 502}, + {409, 408}, + {410, 573}, + {414, 544}, + {417, 416}, + {419, 418}, + {421, 420}, + {424, 423}, + {429, 428}, + {432, 431}, + {436, 435}, + {438, 437}, + {441, 440}, + {445, 444}, + {447, 503}, + {452, 453}, + {453, 453}, + {454, 453}, + {455, 456}, + {456, 456}, + {457, 456}, + {458, 459}, + {459, 459}, + {460, 459}, + {462, 461}, + {464, 463}, + {466, 465}, + {468, 467}, + {470, 469}, + {472, 471}, + {474, 473}, + {476, 475}, + {477, 398}, + {479, 478}, + {481, 480}, + {483, 482}, + {485, 484}, + {487, 486}, + {489, 488}, + {491, 490}, + {493, 492}, + {495, 494}, + {497, 498}, + {498, 498}, + {499, 498}, + {501, 500}, + {505, 504}, + {507, 506}, + {509, 508}, + {511, 510}, + {513, 512}, + {515, 514}, + {517, 516}, + {519, 518}, + {521, 520}, + {523, 522}, + {525, 524}, + {527, 526}, + {529, 528}, + {531, 530}, + {533, 532}, + {535, 534}, + {537, 536}, + {539, 538}, + {541, 540}, + {543, 542}, + {547, 546}, + {549, 548}, + {551, 550}, + {553, 552}, + {555, 554}, + {557, 556}, + {559, 558}, + {561, 560}, + {563, 562}, + {572, 571}, + {575, 11390}, + {576, 11391}, + {578, 577}, + {583, 582}, + {585, 584}, + {587, 586}, + {589, 588}, + {591, 590}, + {592, 11375}, + {593, 11373}, + {594, 11376}, + {595, 385}, + {596, 390}, + {598, 393}, + {599, 394}, + {601, 399}, + {603, 400}, + {604, 42923}, + {608, 403}, + {609, 42924}, + {611, 404}, + {613, 42893}, + {614, 42922}, + {616, 407}, + {617, 406}, + {618, 42926}, + {619, 11362}, + {620, 42925}, + {623, 412}, + {625, 11374}, + {626, 413}, + {629, 415}, + {637, 11364}, + {640, 422}, + {643, 425}, + {647, 42929}, + {648, 430}, + {649, 580}, + {650, 433}, + {651, 434}, + {652, 581}, + {658, 439}, + {669, 42930}, + {670, 42928}, + {837, 921}, + {881, 880}, + {883, 882}, + {887, 886}, + {891, 1021}, + {892, 1022}, + {893, 1023}, + {940, 902}, + {941, 904}, + {942, 905}, + {943, 906}, + {945, 913}, + {946, 914}, + {947, 915}, + {948, 916}, + {949, 917}, + {950, 918}, + {951, 919}, + {952, 920}, + {953, 921}, + {954, 922}, + {955, 923}, + {956, 924}, + {957, 925}, + {958, 926}, + {959, 927}, + {960, 928}, + {961, 929}, + {962, 931}, + {963, 931}, + {964, 932}, + {965, 933}, + {966, 934}, + {967, 935}, + {968, 936}, + {969, 937}, + {970, 938}, + {971, 939}, + {972, 908}, + {973, 910}, + {974, 911}, + {976, 914}, + {977, 920}, + {981, 934}, + {982, 928}, + {983, 975}, + {985, 984}, + {987, 986}, + {989, 988}, + {991, 990}, + {993, 992}, + {995, 994}, + {997, 996}, + {999, 998}, + {1001, 1000}, + {1003, 1002}, + {1005, 1004}, + {1007, 1006}, + {1008, 922}, + {1009, 929}, + {1010, 1017}, + {1011, 895}, + {1013, 917}, + {1016, 1015}, + {1019, 1018}, + {1072, 1040}, + {1073, 1041}, + {1074, 1042}, + {1075, 1043}, + {1076, 1044}, + {1077, 1045}, + {1078, 1046}, + {1079, 1047}, + {1080, 1048}, + {1081, 1049}, + {1082, 1050}, + {1083, 1051}, + {1084, 1052}, + {1085, 1053}, + {1086, 1054}, + {1087, 1055}, + {1088, 1056}, + {1089, 1057}, + {1090, 1058}, + {1091, 1059}, + {1092, 1060}, + {1093, 1061}, + {1094, 1062}, + {1095, 1063}, + {1096, 1064}, + {1097, 1065}, + {1098, 1066}, + {1099, 1067}, + {1100, 1068}, + {1101, 1069}, + {1102, 1070}, + {1103, 1071}, + {1104, 1024}, + {1105, 1025}, + {1106, 1026}, + {1107, 1027}, + {1108, 1028}, + {1109, 1029}, + {1110, 1030}, + {1111, 1031}, + {1112, 1032}, + {1113, 1033}, + {1114, 1034}, + {1115, 1035}, + {1116, 1036}, + {1117, 1037}, + {1118, 1038}, + {1119, 1039}, + {1121, 1120}, + {1123, 1122}, + {1125, 1124}, + {1127, 1126}, + {1129, 1128}, + {1131, 1130}, + {1133, 1132}, + {1135, 1134}, + {1137, 1136}, + {1139, 1138}, + {1141, 1140}, + {1143, 1142}, + {1145, 1144}, + {1147, 1146}, + {1149, 1148}, + {1151, 1150}, + {1153, 1152}, + {1163, 1162}, + {1165, 1164}, + {1167, 1166}, + {1169, 1168}, + {1171, 1170}, + {1173, 1172}, + {1175, 1174}, + {1177, 1176}, + {1179, 1178}, + {1181, 1180}, + {1183, 1182}, + {1185, 1184}, + {1187, 1186}, + {1189, 1188}, + {1191, 1190}, + {1193, 1192}, + {1195, 1194}, + {1197, 1196}, + {1199, 1198}, + {1201, 1200}, + {1203, 1202}, + {1205, 1204}, + {1207, 1206}, + {1209, 1208}, + {1211, 1210}, + {1213, 1212}, + {1215, 1214}, + {1218, 1217}, + {1220, 1219}, + {1222, 1221}, + {1224, 1223}, + {1226, 1225}, + {1228, 1227}, + {1230, 1229}, + {1231, 1216}, + {1233, 1232}, + {1235, 1234}, + {1237, 1236}, + {1239, 1238}, + {1241, 1240}, + {1243, 1242}, + {1245, 1244}, + {1247, 1246}, + {1249, 1248}, + {1251, 1250}, + {1253, 1252}, + {1255, 1254}, + {1257, 1256}, + {1259, 1258}, + {1261, 1260}, + {1263, 1262}, + {1265, 1264}, + {1267, 1266}, + {1269, 1268}, + {1271, 1270}, + {1273, 1272}, + {1275, 1274}, + {1277, 1276}, + {1279, 1278}, + {1281, 1280}, + {1283, 1282}, + {1285, 1284}, + {1287, 1286}, + {1289, 1288}, + {1291, 1290}, + {1293, 1292}, + {1295, 1294}, + {1297, 1296}, + {1299, 1298}, + {1301, 1300}, + {1303, 1302}, + {1305, 1304}, + {1307, 1306}, + {1309, 1308}, + {1311, 1310}, + {1313, 1312}, + {1315, 1314}, + {1317, 1316}, + {1319, 1318}, + {1321, 1320}, + {1323, 1322}, + {1325, 1324}, + {1327, 1326}, + {1377, 1329}, + {1378, 1330}, + {1379, 1331}, + {1380, 1332}, + {1381, 1333}, + {1382, 1334}, + {1383, 1335}, + {1384, 1336}, + {1385, 1337}, + {1386, 1338}, + {1387, 1339}, + {1388, 1340}, + {1389, 1341}, + {1390, 1342}, + {1391, 1343}, + {1392, 1344}, + {1393, 1345}, + {1394, 1346}, + {1395, 1347}, + {1396, 1348}, + {1397, 1349}, + {1398, 1350}, + {1399, 1351}, + {1400, 1352}, + {1401, 1353}, + {1402, 1354}, + {1403, 1355}, + {1404, 1356}, + {1405, 1357}, + {1406, 1358}, + {1407, 1359}, + {1408, 1360}, + {1409, 1361}, + {1410, 1362}, + {1411, 1363}, + {1412, 1364}, + {1413, 1365}, + {1414, 1366}, + {4304, 4304}, + {4305, 4305}, + {4306, 4306}, + {4307, 4307}, + {4308, 4308}, + {4309, 4309}, + {4310, 4310}, + {4311, 4311}, + {4312, 4312}, + {4313, 4313}, + {4314, 4314}, + {4315, 4315}, + {4316, 4316}, + {4317, 4317}, + {4318, 4318}, + {4319, 4319}, + {4320, 4320}, + {4321, 4321}, + {4322, 4322}, + {4323, 4323}, + {4324, 4324}, + {4325, 4325}, + {4326, 4326}, + {4327, 4327}, + {4328, 4328}, + {4329, 4329}, + {4330, 4330}, + {4331, 4331}, + {4332, 4332}, + {4333, 4333}, + {4334, 4334}, + {4335, 4335}, + {4336, 4336}, + {4337, 4337}, + {4338, 4338}, + {4339, 4339}, + {4340, 4340}, + {4341, 4341}, + {4342, 4342}, + {4343, 4343}, + {4344, 4344}, + {4345, 4345}, + {4346, 4346}, + {4349, 4349}, + {4350, 4350}, + {4351, 4351}, + {5112, 5104}, + {5113, 5105}, + {5114, 5106}, + {5115, 5107}, + {5116, 5108}, + {5117, 5109}, + {7296, 1042}, + {7297, 1044}, + {7298, 1054}, + {7299, 1057}, + {7300, 1058}, + {7301, 1058}, + {7302, 1066}, + {7303, 1122}, + {7304, 42570}, + {7545, 42877}, + {7549, 11363}, + {7681, 7680}, + {7683, 7682}, + {7685, 7684}, + {7687, 7686}, + {7689, 7688}, + {7691, 7690}, + {7693, 7692}, + {7695, 7694}, + {7697, 7696}, + {7699, 7698}, + {7701, 7700}, + {7703, 7702}, + {7705, 7704}, + {7707, 7706}, + {7709, 7708}, + {7711, 7710}, + {7713, 7712}, + {7715, 7714}, + {7717, 7716}, + {7719, 7718}, + {7721, 7720}, + {7723, 7722}, + {7725, 7724}, + {7727, 7726}, + {7729, 7728}, + {7731, 7730}, + {7733, 7732}, + {7735, 7734}, + {7737, 7736}, + {7739, 7738}, + {7741, 7740}, + {7743, 7742}, + {7745, 7744}, + {7747, 7746}, + {7749, 7748}, + {7751, 7750}, + {7753, 7752}, + {7755, 7754}, + {7757, 7756}, + {7759, 7758}, + {7761, 7760}, + {7763, 7762}, + {7765, 7764}, + {7767, 7766}, + {7769, 7768}, + {7771, 7770}, + {7773, 7772}, + {7775, 7774}, + {7777, 7776}, + {7779, 7778}, + {7781, 7780}, + {7783, 7782}, + {7785, 7784}, + {7787, 7786}, + {7789, 7788}, + {7791, 7790}, + {7793, 7792}, + {7795, 7794}, + {7797, 7796}, + {7799, 7798}, + {7801, 7800}, + {7803, 7802}, + {7805, 7804}, + {7807, 7806}, + {7809, 7808}, + {7811, 7810}, + {7813, 7812}, + {7815, 7814}, + {7817, 7816}, + {7819, 7818}, + {7821, 7820}, + {7823, 7822}, + {7825, 7824}, + {7827, 7826}, + {7829, 7828}, + {7835, 7776}, + {7841, 7840}, + {7843, 7842}, + {7845, 7844}, + {7847, 7846}, + {7849, 7848}, + {7851, 7850}, + {7853, 7852}, + {7855, 7854}, + {7857, 7856}, + {7859, 7858}, + {7861, 7860}, + {7863, 7862}, + {7865, 7864}, + {7867, 7866}, + {7869, 7868}, + {7871, 7870}, + {7873, 7872}, + {7875, 7874}, + {7877, 7876}, + {7879, 7878}, + {7881, 7880}, + {7883, 7882}, + {7885, 7884}, + {7887, 7886}, + {7889, 7888}, + {7891, 7890}, + {7893, 7892}, + {7895, 7894}, + {7897, 7896}, + {7899, 7898}, + {7901, 7900}, + {7903, 7902}, + {7905, 7904}, + {7907, 7906}, + {7909, 7908}, + {7911, 7910}, + {7913, 7912}, + {7915, 7914}, + {7917, 7916}, + {7919, 7918}, + {7921, 7920}, + {7923, 7922}, + {7925, 7924}, + {7927, 7926}, + {7929, 7928}, + {7931, 7930}, + {7933, 7932}, + {7935, 7934}, + {7936, 7944}, + {7937, 7945}, + {7938, 7946}, + {7939, 7947}, + {7940, 7948}, + {7941, 7949}, + {7942, 7950}, + {7943, 7951}, + {7952, 7960}, + {7953, 7961}, + {7954, 7962}, + {7955, 7963}, + {7956, 7964}, + {7957, 7965}, + {7968, 7976}, + {7969, 7977}, + {7970, 7978}, + {7971, 7979}, + {7972, 7980}, + {7973, 7981}, + {7974, 7982}, + {7975, 7983}, + {7984, 7992}, + {7985, 7993}, + {7986, 7994}, + {7987, 7995}, + {7988, 7996}, + {7989, 7997}, + {7990, 7998}, + {7991, 7999}, + {8000, 8008}, + {8001, 8009}, + {8002, 8010}, + {8003, 8011}, + {8004, 8012}, + {8005, 8013}, + {8017, 8025}, + {8019, 8027}, + {8021, 8029}, + {8023, 8031}, + {8032, 8040}, + {8033, 8041}, + {8034, 8042}, + {8035, 8043}, + {8036, 8044}, + {8037, 8045}, + {8038, 8046}, + {8039, 8047}, + {8048, 8122}, + {8049, 8123}, + {8050, 8136}, + {8051, 8137}, + {8052, 8138}, + {8053, 8139}, + {8054, 8154}, + {8055, 8155}, + {8056, 8184}, + {8057, 8185}, + {8058, 8170}, + {8059, 8171}, + {8060, 8186}, + {8061, 8187}, + {8064, 8072}, + {8065, 8073}, + {8066, 8074}, + {8067, 8075}, + {8068, 8076}, + {8069, 8077}, + {8070, 8078}, + {8071, 8079}, + {8080, 8088}, + {8081, 8089}, + {8082, 8090}, + {8083, 8091}, + {8084, 8092}, + {8085, 8093}, + {8086, 8094}, + {8087, 8095}, + {8096, 8104}, + {8097, 8105}, + {8098, 8106}, + {8099, 8107}, + {8100, 8108}, + {8101, 8109}, + {8102, 8110}, + {8103, 8111}, + {8112, 8120}, + {8113, 8121}, + {8115, 8124}, + {8126, 921}, + {8131, 8140}, + {8144, 8152}, + {8145, 8153}, + {8160, 8168}, + {8161, 8169}, + {8165, 8172}, + {8179, 8188}, + {8526, 8498}, + {8560, 8544}, + {8561, 8545}, + {8562, 8546}, + {8563, 8547}, + {8564, 8548}, + {8565, 8549}, + {8566, 8550}, + {8567, 8551}, + {8568, 8552}, + {8569, 8553}, + {8570, 8554}, + {8571, 8555}, + {8572, 8556}, + {8573, 8557}, + {8574, 8558}, + {8575, 8559}, + {8580, 8579}, + {9424, 9398}, + {9425, 9399}, + {9426, 9400}, + {9427, 9401}, + {9428, 9402}, + {9429, 9403}, + {9430, 9404}, + {9431, 9405}, + {9432, 9406}, + {9433, 9407}, + {9434, 9408}, + {9435, 9409}, + {9436, 9410}, + {9437, 9411}, + {9438, 9412}, + {9439, 9413}, + {9440, 9414}, + {9441, 9415}, + {9442, 9416}, + {9443, 9417}, + {9444, 9418}, + {9445, 9419}, + {9446, 9420}, + {9447, 9421}, + {9448, 9422}, + {9449, 9423}, + {11312, 11264}, + {11313, 11265}, + {11314, 11266}, + {11315, 11267}, + {11316, 11268}, + {11317, 11269}, + {11318, 11270}, + {11319, 11271}, + {11320, 11272}, + {11321, 11273}, + {11322, 11274}, + {11323, 11275}, + {11324, 11276}, + {11325, 11277}, + {11326, 11278}, + {11327, 11279}, + {11328, 11280}, + {11329, 11281}, + {11330, 11282}, + {11331, 11283}, + {11332, 11284}, + {11333, 11285}, + {11334, 11286}, + {11335, 11287}, + {11336, 11288}, + {11337, 11289}, + {11338, 11290}, + {11339, 11291}, + {11340, 11292}, + {11341, 11293}, + {11342, 11294}, + {11343, 11295}, + {11344, 11296}, + {11345, 11297}, + {11346, 11298}, + {11347, 11299}, + {11348, 11300}, + {11349, 11301}, + {11350, 11302}, + {11351, 11303}, + {11352, 11304}, + {11353, 11305}, + {11354, 11306}, + {11355, 11307}, + {11356, 11308}, + {11357, 11309}, + {11358, 11310}, + {11361, 11360}, + {11365, 570}, + {11366, 574}, + {11368, 11367}, + {11370, 11369}, + {11372, 11371}, + {11379, 11378}, + {11382, 11381}, + {11393, 11392}, + {11395, 11394}, + {11397, 11396}, + {11399, 11398}, + {11401, 11400}, + {11403, 11402}, + {11405, 11404}, + {11407, 11406}, + {11409, 11408}, + {11411, 11410}, + {11413, 11412}, + {11415, 11414}, + {11417, 11416}, + {11419, 11418}, + {11421, 11420}, + {11423, 11422}, + {11425, 11424}, + {11427, 11426}, + {11429, 11428}, + {11431, 11430}, + {11433, 11432}, + {11435, 11434}, + {11437, 11436}, + {11439, 11438}, + {11441, 11440}, + {11443, 11442}, + {11445, 11444}, + {11447, 11446}, + {11449, 11448}, + {11451, 11450}, + {11453, 11452}, + {11455, 11454}, + {11457, 11456}, + {11459, 11458}, + {11461, 11460}, + {11463, 11462}, + {11465, 11464}, + {11467, 11466}, + {11469, 11468}, + {11471, 11470}, + {11473, 11472}, + {11475, 11474}, + {11477, 11476}, + {11479, 11478}, + {11481, 11480}, + {11483, 11482}, + {11485, 11484}, + {11487, 11486}, + {11489, 11488}, + {11491, 11490}, + {11500, 11499}, + {11502, 11501}, + {11507, 11506}, + {11520, 4256}, + {11521, 4257}, + {11522, 4258}, + {11523, 4259}, + {11524, 4260}, + {11525, 4261}, + {11526, 4262}, + {11527, 4263}, + {11528, 4264}, + {11529, 4265}, + {11530, 4266}, + {11531, 4267}, + {11532, 4268}, + {11533, 4269}, + {11534, 4270}, + {11535, 4271}, + {11536, 4272}, + {11537, 4273}, + {11538, 4274}, + {11539, 4275}, + {11540, 4276}, + {11541, 4277}, + {11542, 4278}, + {11543, 4279}, + {11544, 4280}, + {11545, 4281}, + {11546, 4282}, + {11547, 4283}, + {11548, 4284}, + {11549, 4285}, + {11550, 4286}, + {11551, 4287}, + {11552, 4288}, + {11553, 4289}, + {11554, 4290}, + {11555, 4291}, + {11556, 4292}, + {11557, 4293}, + {11559, 4295}, + {11565, 4301}, + {42561, 42560}, + {42563, 42562}, + {42565, 42564}, + {42567, 42566}, + {42569, 42568}, + {42571, 42570}, + {42573, 42572}, + {42575, 42574}, + {42577, 42576}, + {42579, 42578}, + {42581, 42580}, + {42583, 42582}, + {42585, 42584}, + {42587, 42586}, + {42589, 42588}, + {42591, 42590}, + {42593, 42592}, + {42595, 42594}, + {42597, 42596}, + {42599, 42598}, + {42601, 42600}, + {42603, 42602}, + {42605, 42604}, + {42625, 42624}, + {42627, 42626}, + {42629, 42628}, + {42631, 42630}, + {42633, 42632}, + {42635, 42634}, + {42637, 42636}, + {42639, 42638}, + {42641, 42640}, + {42643, 42642}, + {42645, 42644}, + {42647, 42646}, + {42649, 42648}, + {42651, 42650}, + {42787, 42786}, + {42789, 42788}, + {42791, 42790}, + {42793, 42792}, + {42795, 42794}, + {42797, 42796}, + {42799, 42798}, + {42803, 42802}, + {42805, 42804}, + {42807, 42806}, + {42809, 42808}, + {42811, 42810}, + {42813, 42812}, + {42815, 42814}, + {42817, 42816}, + {42819, 42818}, + {42821, 42820}, + {42823, 42822}, + {42825, 42824}, + {42827, 42826}, + {42829, 42828}, + {42831, 42830}, + {42833, 42832}, + {42835, 42834}, + {42837, 42836}, + {42839, 42838}, + {42841, 42840}, + {42843, 42842}, + {42845, 42844}, + {42847, 42846}, + {42849, 42848}, + {42851, 42850}, + {42853, 42852}, + {42855, 42854}, + {42857, 42856}, + {42859, 42858}, + {42861, 42860}, + {42863, 42862}, + {42874, 42873}, + {42876, 42875}, + {42879, 42878}, + {42881, 42880}, + {42883, 42882}, + {42885, 42884}, + {42887, 42886}, + {42892, 42891}, + {42897, 42896}, + {42899, 42898}, + {42903, 42902}, + {42905, 42904}, + {42907, 42906}, + {42909, 42908}, + {42911, 42910}, + {42913, 42912}, + {42915, 42914}, + {42917, 42916}, + {42919, 42918}, + {42921, 42920}, + {42933, 42932}, + {42935, 42934}, + {42937, 42936}, + {43859, 42931}, + {43888, 5024}, + {43889, 5025}, + {43890, 5026}, + {43891, 5027}, + {43892, 5028}, + {43893, 5029}, + {43894, 5030}, + {43895, 5031}, + {43896, 5032}, + {43897, 5033}, + {43898, 5034}, + {43899, 5035}, + {43900, 5036}, + {43901, 5037}, + {43902, 5038}, + {43903, 5039}, + {43904, 5040}, + {43905, 5041}, + {43906, 5042}, + {43907, 5043}, + {43908, 5044}, + {43909, 5045}, + {43910, 5046}, + {43911, 5047}, + {43912, 5048}, + {43913, 5049}, + {43914, 5050}, + {43915, 5051}, + {43916, 5052}, + {43917, 5053}, + {43918, 5054}, + {43919, 5055}, + {43920, 5056}, + {43921, 5057}, + {43922, 5058}, + {43923, 5059}, + {43924, 5060}, + {43925, 5061}, + {43926, 5062}, + {43927, 5063}, + {43928, 5064}, + {43929, 5065}, + {43930, 5066}, + {43931, 5067}, + {43932, 5068}, + {43933, 5069}, + {43934, 5070}, + {43935, 5071}, + {43936, 5072}, + {43937, 5073}, + {43938, 5074}, + {43939, 5075}, + {43940, 5076}, + {43941, 5077}, + {43942, 5078}, + {43943, 5079}, + {43944, 5080}, + {43945, 5081}, + {43946, 5082}, + {43947, 5083}, + {43948, 5084}, + {43949, 5085}, + {43950, 5086}, + {43951, 5087}, + {43952, 5088}, + {43953, 5089}, + {43954, 5090}, + {43955, 5091}, + {43956, 5092}, + {43957, 5093}, + {43958, 5094}, + {43959, 5095}, + {43960, 5096}, + {43961, 5097}, + {43962, 5098}, + {43963, 5099}, + {43964, 5100}, + {43965, 5101}, + {43966, 5102}, + {43967, 5103}, + {65345, 65313}, + {65346, 65314}, + {65347, 65315}, + {65348, 65316}, + {65349, 65317}, + {65350, 65318}, + {65351, 65319}, + {65352, 65320}, + {65353, 65321}, + {65354, 65322}, + {65355, 65323}, + {65356, 65324}, + {65357, 65325}, + {65358, 65326}, + {65359, 65327}, + {65360, 65328}, + {65361, 65329}, + {65362, 65330}, + {65363, 65331}, + {65364, 65332}, + {65365, 65333}, + {65366, 65334}, + {65367, 65335}, + {65368, 65336}, + {65369, 65337}, + {65370, 65338}, + {66600, 66560}, + {66601, 66561}, + {66602, 66562}, + {66603, 66563}, + {66604, 66564}, + {66605, 66565}, + {66606, 66566}, + {66607, 66567}, + {66608, 66568}, + {66609, 66569}, + {66610, 66570}, + {66611, 66571}, + {66612, 66572}, + {66613, 66573}, + {66614, 66574}, + {66615, 66575}, + {66616, 66576}, + {66617, 66577}, + {66618, 66578}, + {66619, 66579}, + {66620, 66580}, + {66621, 66581}, + {66622, 66582}, + {66623, 66583}, + {66624, 66584}, + {66625, 66585}, + {66626, 66586}, + {66627, 66587}, + {66628, 66588}, + {66629, 66589}, + {66630, 66590}, + {66631, 66591}, + {66632, 66592}, + {66633, 66593}, + {66634, 66594}, + {66635, 66595}, + {66636, 66596}, + {66637, 66597}, + {66638, 66598}, + {66639, 66599}, + {66776, 66736}, + {66777, 66737}, + {66778, 66738}, + {66779, 66739}, + {66780, 66740}, + {66781, 66741}, + {66782, 66742}, + {66783, 66743}, + {66784, 66744}, + {66785, 66745}, + {66786, 66746}, + {66787, 66747}, + {66788, 66748}, + {66789, 66749}, + {66790, 66750}, + {66791, 66751}, + {66792, 66752}, + {66793, 66753}, + {66794, 66754}, + {66795, 66755}, + {66796, 66756}, + {66797, 66757}, + {66798, 66758}, + {66799, 66759}, + {66800, 66760}, + {66801, 66761}, + {66802, 66762}, + {66803, 66763}, + {66804, 66764}, + {66805, 66765}, + {66806, 66766}, + {66807, 66767}, + {66808, 66768}, + {66809, 66769}, + {66810, 66770}, + {66811, 66771}, + {68800, 68736}, + {68801, 68737}, + {68802, 68738}, + {68803, 68739}, + {68804, 68740}, + {68805, 68741}, + {68806, 68742}, + {68807, 68743}, + {68808, 68744}, + {68809, 68745}, + {68810, 68746}, + {68811, 68747}, + {68812, 68748}, + {68813, 68749}, + {68814, 68750}, + {68815, 68751}, + {68816, 68752}, + {68817, 68753}, + {68818, 68754}, + {68819, 68755}, + {68820, 68756}, + {68821, 68757}, + {68822, 68758}, + {68823, 68759}, + {68824, 68760}, + {68825, 68761}, + {68826, 68762}, + {68827, 68763}, + {68828, 68764}, + {68829, 68765}, + {68830, 68766}, + {68831, 68767}, + {68832, 68768}, + {68833, 68769}, + {68834, 68770}, + {68835, 68771}, + {68836, 68772}, + {68837, 68773}, + {68838, 68774}, + {68839, 68775}, + {68840, 68776}, + {68841, 68777}, + {68842, 68778}, + {68843, 68779}, + {68844, 68780}, + {68845, 68781}, + {68846, 68782}, + {68847, 68783}, + {68848, 68784}, + {68849, 68785}, + {68850, 68786}, + {71872, 71840}, + {71873, 71841}, + {71874, 71842}, + {71875, 71843}, + {71876, 71844}, + {71877, 71845}, + {71878, 71846}, + {71879, 71847}, + {71880, 71848}, + {71881, 71849}, + {71882, 71850}, + {71883, 71851}, + {71884, 71852}, + {71885, 71853}, + {71886, 71854}, + {71887, 71855}, + {71888, 71856}, + {71889, 71857}, + {71890, 71858}, + {71891, 71859}, + {71892, 71860}, + {71893, 71861}, + {71894, 71862}, + {71895, 71863}, + {71896, 71864}, + {71897, 71865}, + {71898, 71866}, + {71899, 71867}, + {71900, 71868}, + {71901, 71869}, + {71902, 71870}, + {71903, 71871}, + {93792, 93760}, + {93793, 93761}, + {93794, 93762}, + {93795, 93763}, + {93796, 93764}, + {93797, 93765}, + {93798, 93766}, + {93799, 93767}, + {93800, 93768}, + {93801, 93769}, + {93802, 93770}, + {93803, 93771}, + {93804, 93772}, + {93805, 93773}, + {93806, 93774}, + {93807, 93775}, + {93808, 93776}, + {93809, 93777}, + {93810, 93778}, + {93811, 93779}, + {93812, 93780}, + {93813, 93781}, + {93814, 93782}, + {93815, 93783}, + {93816, 93784}, + {93817, 93785}, + {93818, 93786}, + {93819, 93787}, + {93820, 93788}, + {93821, 93789}, + {93822, 93790}, + {93823, 93791}, + {125218, 125184}, + {125219, 125185}, + {125220, 125186}, + {125221, 125187}, + {125222, 125188}, + {125223, 125189}, + {125224, 125190}, + {125225, 125191}, + {125226, 125192}, + {125227, 125193}, + {125228, 125194}, + {125229, 125195}, + {125230, 125196}, + {125231, 125197}, + {125232, 125198}, + {125233, 125199}, + {125234, 125200}, + {125235, 125201}, + {125236, 125202}, + {125237, 125203}, + {125238, 125204}, + {125239, 125205}, + {125240, 125206}, + {125241, 125207}, + {125242, 125208}, + {125243, 125209}, + {125244, 125210}, + {125245, 125211}, + {125246, 125212}, + {125247, 125213}, + {125248, 125214}, + {125249, 125215}, + {125250, 125216}, + {125251, 125217}, +}; + +UnicodeCharacterSimpleMapping unicodeUpper[1400] = { + {97, 65}, + {98, 66}, + {99, 67}, + {100, 68}, + {101, 69}, + {102, 70}, + {103, 71}, + {104, 72}, + {105, 73}, + {106, 74}, + {107, 75}, + {108, 76}, + {109, 77}, + {110, 78}, + {111, 79}, + {112, 80}, + {113, 81}, + {114, 82}, + {115, 83}, + {116, 84}, + {117, 85}, + {118, 86}, + {119, 87}, + {120, 88}, + {121, 89}, + {122, 90}, + {181, 924}, + {224, 192}, + {225, 193}, + {226, 194}, + {227, 195}, + {228, 196}, + {229, 197}, + {230, 198}, + {231, 199}, + {232, 200}, + {233, 201}, + {234, 202}, + {235, 203}, + {236, 204}, + {237, 205}, + {238, 206}, + {239, 207}, + {240, 208}, + {241, 209}, + {242, 210}, + {243, 211}, + {244, 212}, + {245, 213}, + {246, 214}, + {248, 216}, + {249, 217}, + {250, 218}, + {251, 219}, + {252, 220}, + {253, 221}, + {254, 222}, + {255, 376}, + {257, 256}, + {259, 258}, + {261, 260}, + {263, 262}, + {265, 264}, + {267, 266}, + {269, 268}, + {271, 270}, + {273, 272}, + {275, 274}, + {277, 276}, + {279, 278}, + {281, 280}, + {283, 282}, + {285, 284}, + {287, 286}, + {289, 288}, + {291, 290}, + {293, 292}, + {295, 294}, + {297, 296}, + {299, 298}, + {301, 300}, + {303, 302}, + {305, 73}, + {307, 306}, + {309, 308}, + {311, 310}, + {314, 313}, + {316, 315}, + {318, 317}, + {320, 319}, + {322, 321}, + {324, 323}, + {326, 325}, + {328, 327}, + {331, 330}, + {333, 332}, + {335, 334}, + {337, 336}, + {339, 338}, + {341, 340}, + {343, 342}, + {345, 344}, + {347, 346}, + {349, 348}, + {351, 350}, + {353, 352}, + {355, 354}, + {357, 356}, + {359, 358}, + {361, 360}, + {363, 362}, + {365, 364}, + {367, 366}, + {369, 368}, + {371, 370}, + {373, 372}, + {375, 374}, + {378, 377}, + {380, 379}, + {382, 381}, + {383, 83}, + {384, 579}, + {387, 386}, + {389, 388}, + {392, 391}, + {396, 395}, + {402, 401}, + {405, 502}, + {409, 408}, + {410, 573}, + {414, 544}, + {417, 416}, + {419, 418}, + {421, 420}, + {424, 423}, + {429, 428}, + {432, 431}, + {436, 435}, + {438, 437}, + {441, 440}, + {445, 444}, + {447, 503}, + {453, 452}, + {454, 452}, + {456, 455}, + {457, 455}, + {459, 458}, + {460, 458}, + {462, 461}, + {464, 463}, + {466, 465}, + {468, 467}, + {470, 469}, + {472, 471}, + {474, 473}, + {476, 475}, + {477, 398}, + {479, 478}, + {481, 480}, + {483, 482}, + {485, 484}, + {487, 486}, + {489, 488}, + {491, 490}, + {493, 492}, + {495, 494}, + {498, 497}, + {499, 497}, + {501, 500}, + {505, 504}, + {507, 506}, + {509, 508}, + {511, 510}, + {513, 512}, + {515, 514}, + {517, 516}, + {519, 518}, + {521, 520}, + {523, 522}, + {525, 524}, + {527, 526}, + {529, 528}, + {531, 530}, + {533, 532}, + {535, 534}, + {537, 536}, + {539, 538}, + {541, 540}, + {543, 542}, + {547, 546}, + {549, 548}, + {551, 550}, + {553, 552}, + {555, 554}, + {557, 556}, + {559, 558}, + {561, 560}, + {563, 562}, + {572, 571}, + {575, 11390}, + {576, 11391}, + {578, 577}, + {583, 582}, + {585, 584}, + {587, 586}, + {589, 588}, + {591, 590}, + {592, 11375}, + {593, 11373}, + {594, 11376}, + {595, 385}, + {596, 390}, + {598, 393}, + {599, 394}, + {601, 399}, + {603, 400}, + {604, 42923}, + {608, 403}, + {609, 42924}, + {611, 404}, + {613, 42893}, + {614, 42922}, + {616, 407}, + {617, 406}, + {618, 42926}, + {619, 11362}, + {620, 42925}, + {623, 412}, + {625, 11374}, + {626, 413}, + {629, 415}, + {637, 11364}, + {640, 422}, + {643, 425}, + {647, 42929}, + {648, 430}, + {649, 580}, + {650, 433}, + {651, 434}, + {652, 581}, + {658, 439}, + {669, 42930}, + {670, 42928}, + {837, 921}, + {881, 880}, + {883, 882}, + {887, 886}, + {891, 1021}, + {892, 1022}, + {893, 1023}, + {940, 902}, + {941, 904}, + {942, 905}, + {943, 906}, + {945, 913}, + {946, 914}, + {947, 915}, + {948, 916}, + {949, 917}, + {950, 918}, + {951, 919}, + {952, 920}, + {953, 921}, + {954, 922}, + {955, 923}, + {956, 924}, + {957, 925}, + {958, 926}, + {959, 927}, + {960, 928}, + {961, 929}, + {962, 931}, + {963, 931}, + {964, 932}, + {965, 933}, + {966, 934}, + {967, 935}, + {968, 936}, + {969, 937}, + {970, 938}, + {971, 939}, + {972, 908}, + {973, 910}, + {974, 911}, + {976, 914}, + {977, 920}, + {981, 934}, + {982, 928}, + {983, 975}, + {985, 984}, + {987, 986}, + {989, 988}, + {991, 990}, + {993, 992}, + {995, 994}, + {997, 996}, + {999, 998}, + {1001, 1000}, + {1003, 1002}, + {1005, 1004}, + {1007, 1006}, + {1008, 922}, + {1009, 929}, + {1010, 1017}, + {1011, 895}, + {1013, 917}, + {1016, 1015}, + {1019, 1018}, + {1072, 1040}, + {1073, 1041}, + {1074, 1042}, + {1075, 1043}, + {1076, 1044}, + {1077, 1045}, + {1078, 1046}, + {1079, 1047}, + {1080, 1048}, + {1081, 1049}, + {1082, 1050}, + {1083, 1051}, + {1084, 1052}, + {1085, 1053}, + {1086, 1054}, + {1087, 1055}, + {1088, 1056}, + {1089, 1057}, + {1090, 1058}, + {1091, 1059}, + {1092, 1060}, + {1093, 1061}, + {1094, 1062}, + {1095, 1063}, + {1096, 1064}, + {1097, 1065}, + {1098, 1066}, + {1099, 1067}, + {1100, 1068}, + {1101, 1069}, + {1102, 1070}, + {1103, 1071}, + {1104, 1024}, + {1105, 1025}, + {1106, 1026}, + {1107, 1027}, + {1108, 1028}, + {1109, 1029}, + {1110, 1030}, + {1111, 1031}, + {1112, 1032}, + {1113, 1033}, + {1114, 1034}, + {1115, 1035}, + {1116, 1036}, + {1117, 1037}, + {1118, 1038}, + {1119, 1039}, + {1121, 1120}, + {1123, 1122}, + {1125, 1124}, + {1127, 1126}, + {1129, 1128}, + {1131, 1130}, + {1133, 1132}, + {1135, 1134}, + {1137, 1136}, + {1139, 1138}, + {1141, 1140}, + {1143, 1142}, + {1145, 1144}, + {1147, 1146}, + {1149, 1148}, + {1151, 1150}, + {1153, 1152}, + {1163, 1162}, + {1165, 1164}, + {1167, 1166}, + {1169, 1168}, + {1171, 1170}, + {1173, 1172}, + {1175, 1174}, + {1177, 1176}, + {1179, 1178}, + {1181, 1180}, + {1183, 1182}, + {1185, 1184}, + {1187, 1186}, + {1189, 1188}, + {1191, 1190}, + {1193, 1192}, + {1195, 1194}, + {1197, 1196}, + {1199, 1198}, + {1201, 1200}, + {1203, 1202}, + {1205, 1204}, + {1207, 1206}, + {1209, 1208}, + {1211, 1210}, + {1213, 1212}, + {1215, 1214}, + {1218, 1217}, + {1220, 1219}, + {1222, 1221}, + {1224, 1223}, + {1226, 1225}, + {1228, 1227}, + {1230, 1229}, + {1231, 1216}, + {1233, 1232}, + {1235, 1234}, + {1237, 1236}, + {1239, 1238}, + {1241, 1240}, + {1243, 1242}, + {1245, 1244}, + {1247, 1246}, + {1249, 1248}, + {1251, 1250}, + {1253, 1252}, + {1255, 1254}, + {1257, 1256}, + {1259, 1258}, + {1261, 1260}, + {1263, 1262}, + {1265, 1264}, + {1267, 1266}, + {1269, 1268}, + {1271, 1270}, + {1273, 1272}, + {1275, 1274}, + {1277, 1276}, + {1279, 1278}, + {1281, 1280}, + {1283, 1282}, + {1285, 1284}, + {1287, 1286}, + {1289, 1288}, + {1291, 1290}, + {1293, 1292}, + {1295, 1294}, + {1297, 1296}, + {1299, 1298}, + {1301, 1300}, + {1303, 1302}, + {1305, 1304}, + {1307, 1306}, + {1309, 1308}, + {1311, 1310}, + {1313, 1312}, + {1315, 1314}, + {1317, 1316}, + {1319, 1318}, + {1321, 1320}, + {1323, 1322}, + {1325, 1324}, + {1327, 1326}, + {1377, 1329}, + {1378, 1330}, + {1379, 1331}, + {1380, 1332}, + {1381, 1333}, + {1382, 1334}, + {1383, 1335}, + {1384, 1336}, + {1385, 1337}, + {1386, 1338}, + {1387, 1339}, + {1388, 1340}, + {1389, 1341}, + {1390, 1342}, + {1391, 1343}, + {1392, 1344}, + {1393, 1345}, + {1394, 1346}, + {1395, 1347}, + {1396, 1348}, + {1397, 1349}, + {1398, 1350}, + {1399, 1351}, + {1400, 1352}, + {1401, 1353}, + {1402, 1354}, + {1403, 1355}, + {1404, 1356}, + {1405, 1357}, + {1406, 1358}, + {1407, 1359}, + {1408, 1360}, + {1409, 1361}, + {1410, 1362}, + {1411, 1363}, + {1412, 1364}, + {1413, 1365}, + {1414, 1366}, + {4304, 7312}, + {4305, 7313}, + {4306, 7314}, + {4307, 7315}, + {4308, 7316}, + {4309, 7317}, + {4310, 7318}, + {4311, 7319}, + {4312, 7320}, + {4313, 7321}, + {4314, 7322}, + {4315, 7323}, + {4316, 7324}, + {4317, 7325}, + {4318, 7326}, + {4319, 7327}, + {4320, 7328}, + {4321, 7329}, + {4322, 7330}, + {4323, 7331}, + {4324, 7332}, + {4325, 7333}, + {4326, 7334}, + {4327, 7335}, + {4328, 7336}, + {4329, 7337}, + {4330, 7338}, + {4331, 7339}, + {4332, 7340}, + {4333, 7341}, + {4334, 7342}, + {4335, 7343}, + {4336, 7344}, + {4337, 7345}, + {4338, 7346}, + {4339, 7347}, + {4340, 7348}, + {4341, 7349}, + {4342, 7350}, + {4343, 7351}, + {4344, 7352}, + {4345, 7353}, + {4346, 7354}, + {4349, 7357}, + {4350, 7358}, + {4351, 7359}, + {5112, 5104}, + {5113, 5105}, + {5114, 5106}, + {5115, 5107}, + {5116, 5108}, + {5117, 5109}, + {7296, 1042}, + {7297, 1044}, + {7298, 1054}, + {7299, 1057}, + {7300, 1058}, + {7301, 1058}, + {7302, 1066}, + {7303, 1122}, + {7304, 42570}, + {7545, 42877}, + {7549, 11363}, + {7681, 7680}, + {7683, 7682}, + {7685, 7684}, + {7687, 7686}, + {7689, 7688}, + {7691, 7690}, + {7693, 7692}, + {7695, 7694}, + {7697, 7696}, + {7699, 7698}, + {7701, 7700}, + {7703, 7702}, + {7705, 7704}, + {7707, 7706}, + {7709, 7708}, + {7711, 7710}, + {7713, 7712}, + {7715, 7714}, + {7717, 7716}, + {7719, 7718}, + {7721, 7720}, + {7723, 7722}, + {7725, 7724}, + {7727, 7726}, + {7729, 7728}, + {7731, 7730}, + {7733, 7732}, + {7735, 7734}, + {7737, 7736}, + {7739, 7738}, + {7741, 7740}, + {7743, 7742}, + {7745, 7744}, + {7747, 7746}, + {7749, 7748}, + {7751, 7750}, + {7753, 7752}, + {7755, 7754}, + {7757, 7756}, + {7759, 7758}, + {7761, 7760}, + {7763, 7762}, + {7765, 7764}, + {7767, 7766}, + {7769, 7768}, + {7771, 7770}, + {7773, 7772}, + {7775, 7774}, + {7777, 7776}, + {7779, 7778}, + {7781, 7780}, + {7783, 7782}, + {7785, 7784}, + {7787, 7786}, + {7789, 7788}, + {7791, 7790}, + {7793, 7792}, + {7795, 7794}, + {7797, 7796}, + {7799, 7798}, + {7801, 7800}, + {7803, 7802}, + {7805, 7804}, + {7807, 7806}, + {7809, 7808}, + {7811, 7810}, + {7813, 7812}, + {7815, 7814}, + {7817, 7816}, + {7819, 7818}, + {7821, 7820}, + {7823, 7822}, + {7825, 7824}, + {7827, 7826}, + {7829, 7828}, + {7835, 7776}, + {7841, 7840}, + {7843, 7842}, + {7845, 7844}, + {7847, 7846}, + {7849, 7848}, + {7851, 7850}, + {7853, 7852}, + {7855, 7854}, + {7857, 7856}, + {7859, 7858}, + {7861, 7860}, + {7863, 7862}, + {7865, 7864}, + {7867, 7866}, + {7869, 7868}, + {7871, 7870}, + {7873, 7872}, + {7875, 7874}, + {7877, 7876}, + {7879, 7878}, + {7881, 7880}, + {7883, 7882}, + {7885, 7884}, + {7887, 7886}, + {7889, 7888}, + {7891, 7890}, + {7893, 7892}, + {7895, 7894}, + {7897, 7896}, + {7899, 7898}, + {7901, 7900}, + {7903, 7902}, + {7905, 7904}, + {7907, 7906}, + {7909, 7908}, + {7911, 7910}, + {7913, 7912}, + {7915, 7914}, + {7917, 7916}, + {7919, 7918}, + {7921, 7920}, + {7923, 7922}, + {7925, 7924}, + {7927, 7926}, + {7929, 7928}, + {7931, 7930}, + {7933, 7932}, + {7935, 7934}, + {7936, 7944}, + {7937, 7945}, + {7938, 7946}, + {7939, 7947}, + {7940, 7948}, + {7941, 7949}, + {7942, 7950}, + {7943, 7951}, + {7952, 7960}, + {7953, 7961}, + {7954, 7962}, + {7955, 7963}, + {7956, 7964}, + {7957, 7965}, + {7968, 7976}, + {7969, 7977}, + {7970, 7978}, + {7971, 7979}, + {7972, 7980}, + {7973, 7981}, + {7974, 7982}, + {7975, 7983}, + {7984, 7992}, + {7985, 7993}, + {7986, 7994}, + {7987, 7995}, + {7988, 7996}, + {7989, 7997}, + {7990, 7998}, + {7991, 7999}, + {8000, 8008}, + {8001, 8009}, + {8002, 8010}, + {8003, 8011}, + {8004, 8012}, + {8005, 8013}, + {8017, 8025}, + {8019, 8027}, + {8021, 8029}, + {8023, 8031}, + {8032, 8040}, + {8033, 8041}, + {8034, 8042}, + {8035, 8043}, + {8036, 8044}, + {8037, 8045}, + {8038, 8046}, + {8039, 8047}, + {8048, 8122}, + {8049, 8123}, + {8050, 8136}, + {8051, 8137}, + {8052, 8138}, + {8053, 8139}, + {8054, 8154}, + {8055, 8155}, + {8056, 8184}, + {8057, 8185}, + {8058, 8170}, + {8059, 8171}, + {8060, 8186}, + {8061, 8187}, + {8064, 8072}, + {8065, 8073}, + {8066, 8074}, + {8067, 8075}, + {8068, 8076}, + {8069, 8077}, + {8070, 8078}, + {8071, 8079}, + {8080, 8088}, + {8081, 8089}, + {8082, 8090}, + {8083, 8091}, + {8084, 8092}, + {8085, 8093}, + {8086, 8094}, + {8087, 8095}, + {8096, 8104}, + {8097, 8105}, + {8098, 8106}, + {8099, 8107}, + {8100, 8108}, + {8101, 8109}, + {8102, 8110}, + {8103, 8111}, + {8112, 8120}, + {8113, 8121}, + {8115, 8124}, + {8126, 921}, + {8131, 8140}, + {8144, 8152}, + {8145, 8153}, + {8160, 8168}, + {8161, 8169}, + {8165, 8172}, + {8179, 8188}, + {8526, 8498}, + {8560, 8544}, + {8561, 8545}, + {8562, 8546}, + {8563, 8547}, + {8564, 8548}, + {8565, 8549}, + {8566, 8550}, + {8567, 8551}, + {8568, 8552}, + {8569, 8553}, + {8570, 8554}, + {8571, 8555}, + {8572, 8556}, + {8573, 8557}, + {8574, 8558}, + {8575, 8559}, + {8580, 8579}, + {9424, 9398}, + {9425, 9399}, + {9426, 9400}, + {9427, 9401}, + {9428, 9402}, + {9429, 9403}, + {9430, 9404}, + {9431, 9405}, + {9432, 9406}, + {9433, 9407}, + {9434, 9408}, + {9435, 9409}, + {9436, 9410}, + {9437, 9411}, + {9438, 9412}, + {9439, 9413}, + {9440, 9414}, + {9441, 9415}, + {9442, 9416}, + {9443, 9417}, + {9444, 9418}, + {9445, 9419}, + {9446, 9420}, + {9447, 9421}, + {9448, 9422}, + {9449, 9423}, + {11312, 11264}, + {11313, 11265}, + {11314, 11266}, + {11315, 11267}, + {11316, 11268}, + {11317, 11269}, + {11318, 11270}, + {11319, 11271}, + {11320, 11272}, + {11321, 11273}, + {11322, 11274}, + {11323, 11275}, + {11324, 11276}, + {11325, 11277}, + {11326, 11278}, + {11327, 11279}, + {11328, 11280}, + {11329, 11281}, + {11330, 11282}, + {11331, 11283}, + {11332, 11284}, + {11333, 11285}, + {11334, 11286}, + {11335, 11287}, + {11336, 11288}, + {11337, 11289}, + {11338, 11290}, + {11339, 11291}, + {11340, 11292}, + {11341, 11293}, + {11342, 11294}, + {11343, 11295}, + {11344, 11296}, + {11345, 11297}, + {11346, 11298}, + {11347, 11299}, + {11348, 11300}, + {11349, 11301}, + {11350, 11302}, + {11351, 11303}, + {11352, 11304}, + {11353, 11305}, + {11354, 11306}, + {11355, 11307}, + {11356, 11308}, + {11357, 11309}, + {11358, 11310}, + {11361, 11360}, + {11365, 570}, + {11366, 574}, + {11368, 11367}, + {11370, 11369}, + {11372, 11371}, + {11379, 11378}, + {11382, 11381}, + {11393, 11392}, + {11395, 11394}, + {11397, 11396}, + {11399, 11398}, + {11401, 11400}, + {11403, 11402}, + {11405, 11404}, + {11407, 11406}, + {11409, 11408}, + {11411, 11410}, + {11413, 11412}, + {11415, 11414}, + {11417, 11416}, + {11419, 11418}, + {11421, 11420}, + {11423, 11422}, + {11425, 11424}, + {11427, 11426}, + {11429, 11428}, + {11431, 11430}, + {11433, 11432}, + {11435, 11434}, + {11437, 11436}, + {11439, 11438}, + {11441, 11440}, + {11443, 11442}, + {11445, 11444}, + {11447, 11446}, + {11449, 11448}, + {11451, 11450}, + {11453, 11452}, + {11455, 11454}, + {11457, 11456}, + {11459, 11458}, + {11461, 11460}, + {11463, 11462}, + {11465, 11464}, + {11467, 11466}, + {11469, 11468}, + {11471, 11470}, + {11473, 11472}, + {11475, 11474}, + {11477, 11476}, + {11479, 11478}, + {11481, 11480}, + {11483, 11482}, + {11485, 11484}, + {11487, 11486}, + {11489, 11488}, + {11491, 11490}, + {11500, 11499}, + {11502, 11501}, + {11507, 11506}, + {11520, 4256}, + {11521, 4257}, + {11522, 4258}, + {11523, 4259}, + {11524, 4260}, + {11525, 4261}, + {11526, 4262}, + {11527, 4263}, + {11528, 4264}, + {11529, 4265}, + {11530, 4266}, + {11531, 4267}, + {11532, 4268}, + {11533, 4269}, + {11534, 4270}, + {11535, 4271}, + {11536, 4272}, + {11537, 4273}, + {11538, 4274}, + {11539, 4275}, + {11540, 4276}, + {11541, 4277}, + {11542, 4278}, + {11543, 4279}, + {11544, 4280}, + {11545, 4281}, + {11546, 4282}, + {11547, 4283}, + {11548, 4284}, + {11549, 4285}, + {11550, 4286}, + {11551, 4287}, + {11552, 4288}, + {11553, 4289}, + {11554, 4290}, + {11555, 4291}, + {11556, 4292}, + {11557, 4293}, + {11559, 4295}, + {11565, 4301}, + {42561, 42560}, + {42563, 42562}, + {42565, 42564}, + {42567, 42566}, + {42569, 42568}, + {42571, 42570}, + {42573, 42572}, + {42575, 42574}, + {42577, 42576}, + {42579, 42578}, + {42581, 42580}, + {42583, 42582}, + {42585, 42584}, + {42587, 42586}, + {42589, 42588}, + {42591, 42590}, + {42593, 42592}, + {42595, 42594}, + {42597, 42596}, + {42599, 42598}, + {42601, 42600}, + {42603, 42602}, + {42605, 42604}, + {42625, 42624}, + {42627, 42626}, + {42629, 42628}, + {42631, 42630}, + {42633, 42632}, + {42635, 42634}, + {42637, 42636}, + {42639, 42638}, + {42641, 42640}, + {42643, 42642}, + {42645, 42644}, + {42647, 42646}, + {42649, 42648}, + {42651, 42650}, + {42787, 42786}, + {42789, 42788}, + {42791, 42790}, + {42793, 42792}, + {42795, 42794}, + {42797, 42796}, + {42799, 42798}, + {42803, 42802}, + {42805, 42804}, + {42807, 42806}, + {42809, 42808}, + {42811, 42810}, + {42813, 42812}, + {42815, 42814}, + {42817, 42816}, + {42819, 42818}, + {42821, 42820}, + {42823, 42822}, + {42825, 42824}, + {42827, 42826}, + {42829, 42828}, + {42831, 42830}, + {42833, 42832}, + {42835, 42834}, + {42837, 42836}, + {42839, 42838}, + {42841, 42840}, + {42843, 42842}, + {42845, 42844}, + {42847, 42846}, + {42849, 42848}, + {42851, 42850}, + {42853, 42852}, + {42855, 42854}, + {42857, 42856}, + {42859, 42858}, + {42861, 42860}, + {42863, 42862}, + {42874, 42873}, + {42876, 42875}, + {42879, 42878}, + {42881, 42880}, + {42883, 42882}, + {42885, 42884}, + {42887, 42886}, + {42892, 42891}, + {42897, 42896}, + {42899, 42898}, + {42903, 42902}, + {42905, 42904}, + {42907, 42906}, + {42909, 42908}, + {42911, 42910}, + {42913, 42912}, + {42915, 42914}, + {42917, 42916}, + {42919, 42918}, + {42921, 42920}, + {42933, 42932}, + {42935, 42934}, + {42937, 42936}, + {43859, 42931}, + {43888, 5024}, + {43889, 5025}, + {43890, 5026}, + {43891, 5027}, + {43892, 5028}, + {43893, 5029}, + {43894, 5030}, + {43895, 5031}, + {43896, 5032}, + {43897, 5033}, + {43898, 5034}, + {43899, 5035}, + {43900, 5036}, + {43901, 5037}, + {43902, 5038}, + {43903, 5039}, + {43904, 5040}, + {43905, 5041}, + {43906, 5042}, + {43907, 5043}, + {43908, 5044}, + {43909, 5045}, + {43910, 5046}, + {43911, 5047}, + {43912, 5048}, + {43913, 5049}, + {43914, 5050}, + {43915, 5051}, + {43916, 5052}, + {43917, 5053}, + {43918, 5054}, + {43919, 5055}, + {43920, 5056}, + {43921, 5057}, + {43922, 5058}, + {43923, 5059}, + {43924, 5060}, + {43925, 5061}, + {43926, 5062}, + {43927, 5063}, + {43928, 5064}, + {43929, 5065}, + {43930, 5066}, + {43931, 5067}, + {43932, 5068}, + {43933, 5069}, + {43934, 5070}, + {43935, 5071}, + {43936, 5072}, + {43937, 5073}, + {43938, 5074}, + {43939, 5075}, + {43940, 5076}, + {43941, 5077}, + {43942, 5078}, + {43943, 5079}, + {43944, 5080}, + {43945, 5081}, + {43946, 5082}, + {43947, 5083}, + {43948, 5084}, + {43949, 5085}, + {43950, 5086}, + {43951, 5087}, + {43952, 5088}, + {43953, 5089}, + {43954, 5090}, + {43955, 5091}, + {43956, 5092}, + {43957, 5093}, + {43958, 5094}, + {43959, 5095}, + {43960, 5096}, + {43961, 5097}, + {43962, 5098}, + {43963, 5099}, + {43964, 5100}, + {43965, 5101}, + {43966, 5102}, + {43967, 5103}, + {65345, 65313}, + {65346, 65314}, + {65347, 65315}, + {65348, 65316}, + {65349, 65317}, + {65350, 65318}, + {65351, 65319}, + {65352, 65320}, + {65353, 65321}, + {65354, 65322}, + {65355, 65323}, + {65356, 65324}, + {65357, 65325}, + {65358, 65326}, + {65359, 65327}, + {65360, 65328}, + {65361, 65329}, + {65362, 65330}, + {65363, 65331}, + {65364, 65332}, + {65365, 65333}, + {65366, 65334}, + {65367, 65335}, + {65368, 65336}, + {65369, 65337}, + {65370, 65338}, + {66600, 66560}, + {66601, 66561}, + {66602, 66562}, + {66603, 66563}, + {66604, 66564}, + {66605, 66565}, + {66606, 66566}, + {66607, 66567}, + {66608, 66568}, + {66609, 66569}, + {66610, 66570}, + {66611, 66571}, + {66612, 66572}, + {66613, 66573}, + {66614, 66574}, + {66615, 66575}, + {66616, 66576}, + {66617, 66577}, + {66618, 66578}, + {66619, 66579}, + {66620, 66580}, + {66621, 66581}, + {66622, 66582}, + {66623, 66583}, + {66624, 66584}, + {66625, 66585}, + {66626, 66586}, + {66627, 66587}, + {66628, 66588}, + {66629, 66589}, + {66630, 66590}, + {66631, 66591}, + {66632, 66592}, + {66633, 66593}, + {66634, 66594}, + {66635, 66595}, + {66636, 66596}, + {66637, 66597}, + {66638, 66598}, + {66639, 66599}, + {66776, 66736}, + {66777, 66737}, + {66778, 66738}, + {66779, 66739}, + {66780, 66740}, + {66781, 66741}, + {66782, 66742}, + {66783, 66743}, + {66784, 66744}, + {66785, 66745}, + {66786, 66746}, + {66787, 66747}, + {66788, 66748}, + {66789, 66749}, + {66790, 66750}, + {66791, 66751}, + {66792, 66752}, + {66793, 66753}, + {66794, 66754}, + {66795, 66755}, + {66796, 66756}, + {66797, 66757}, + {66798, 66758}, + {66799, 66759}, + {66800, 66760}, + {66801, 66761}, + {66802, 66762}, + {66803, 66763}, + {66804, 66764}, + {66805, 66765}, + {66806, 66766}, + {66807, 66767}, + {66808, 66768}, + {66809, 66769}, + {66810, 66770}, + {66811, 66771}, + {68800, 68736}, + {68801, 68737}, + {68802, 68738}, + {68803, 68739}, + {68804, 68740}, + {68805, 68741}, + {68806, 68742}, + {68807, 68743}, + {68808, 68744}, + {68809, 68745}, + {68810, 68746}, + {68811, 68747}, + {68812, 68748}, + {68813, 68749}, + {68814, 68750}, + {68815, 68751}, + {68816, 68752}, + {68817, 68753}, + {68818, 68754}, + {68819, 68755}, + {68820, 68756}, + {68821, 68757}, + {68822, 68758}, + {68823, 68759}, + {68824, 68760}, + {68825, 68761}, + {68826, 68762}, + {68827, 68763}, + {68828, 68764}, + {68829, 68765}, + {68830, 68766}, + {68831, 68767}, + {68832, 68768}, + {68833, 68769}, + {68834, 68770}, + {68835, 68771}, + {68836, 68772}, + {68837, 68773}, + {68838, 68774}, + {68839, 68775}, + {68840, 68776}, + {68841, 68777}, + {68842, 68778}, + {68843, 68779}, + {68844, 68780}, + {68845, 68781}, + {68846, 68782}, + {68847, 68783}, + {68848, 68784}, + {68849, 68785}, + {68850, 68786}, + {71872, 71840}, + {71873, 71841}, + {71874, 71842}, + {71875, 71843}, + {71876, 71844}, + {71877, 71845}, + {71878, 71846}, + {71879, 71847}, + {71880, 71848}, + {71881, 71849}, + {71882, 71850}, + {71883, 71851}, + {71884, 71852}, + {71885, 71853}, + {71886, 71854}, + {71887, 71855}, + {71888, 71856}, + {71889, 71857}, + {71890, 71858}, + {71891, 71859}, + {71892, 71860}, + {71893, 71861}, + {71894, 71862}, + {71895, 71863}, + {71896, 71864}, + {71897, 71865}, + {71898, 71866}, + {71899, 71867}, + {71900, 71868}, + {71901, 71869}, + {71902, 71870}, + {71903, 71871}, + {93792, 93760}, + {93793, 93761}, + {93794, 93762}, + {93795, 93763}, + {93796, 93764}, + {93797, 93765}, + {93798, 93766}, + {93799, 93767}, + {93800, 93768}, + {93801, 93769}, + {93802, 93770}, + {93803, 93771}, + {93804, 93772}, + {93805, 93773}, + {93806, 93774}, + {93807, 93775}, + {93808, 93776}, + {93809, 93777}, + {93810, 93778}, + {93811, 93779}, + {93812, 93780}, + {93813, 93781}, + {93814, 93782}, + {93815, 93783}, + {93816, 93784}, + {93817, 93785}, + {93818, 93786}, + {93819, 93787}, + {93820, 93788}, + {93821, 93789}, + {93822, 93790}, + {93823, 93791}, + {125218, 125184}, + {125219, 125185}, + {125220, 125186}, + {125221, 125187}, + {125222, 125188}, + {125223, 125189}, + {125224, 125190}, + {125225, 125191}, + {125226, 125192}, + {125227, 125193}, + {125228, 125194}, + {125229, 125195}, + {125230, 125196}, + {125231, 125197}, + {125232, 125198}, + {125233, 125199}, + {125234, 125200}, + {125235, 125201}, + {125236, 125202}, + {125237, 125203}, + {125238, 125204}, + {125239, 125205}, + {125240, 125206}, + {125241, 125207}, + {125242, 125208}, + {125243, 125209}, + {125244, 125210}, + {125245, 125211}, + {125246, 125212}, + {125247, 125213}, + {125248, 125214}, + {125249, 125215}, + {125250, 125216}, + {125251, 125217}, +}; + From a363ae312fc951ba3b9e06e7e67a32bc05e6e879 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 3 Aug 2018 20:26:44 +0200 Subject: [PATCH 097/194] Core/Flags: Make operators |= &= and ^= constexpr --- ChangeLog.md | 3 +++ include/Nazara/Core/Flags.hpp | 6 +++--- include/Nazara/Core/Flags.inl | 6 +++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 8514bbf26..7eb3ce88c 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -130,6 +130,9 @@ Nazara Engine: - Fixed bug where index wouldn't be used in String::FindLast and String::FindWord - Physics 2D contact callbacks now include an arbiter allowing to query/set parameters about the collision - Added movement with Ctrl in TextAreaWidget +- Added Unicode Data downloader/parser +- Integrated Unicode Data +- Fixed Flags operator |=/&=/^= not being constexpr Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Core/Flags.hpp b/include/Nazara/Core/Flags.hpp index 92c97de9e..189ec5c9c 100644 --- a/include/Nazara/Core/Flags.hpp +++ b/include/Nazara/Core/Flags.hpp @@ -61,9 +61,9 @@ namespace Nz constexpr bool operator==(const Flags& rhs) const; constexpr bool operator!=(const Flags& rhs) const; - /*constexpr*/ Flags& operator|=(const Flags& rhs); - /*constexpr*/ Flags& operator&=(const Flags& rhs); - /*constexpr*/ Flags& operator^=(const Flags& rhs); + constexpr Flags& operator|=(const Flags& rhs); + constexpr Flags& operator&=(const Flags& rhs); + constexpr Flags& operator^=(const Flags& rhs); static constexpr BitField GetFlagValue(E enumValue); diff --git a/include/Nazara/Core/Flags.inl b/include/Nazara/Core/Flags.inl index 2b57a59a8..f74ae2169 100644 --- a/include/Nazara/Core/Flags.inl +++ b/include/Nazara/Core/Flags.inl @@ -166,7 +166,7 @@ namespace Nz * This will enable flags which are enabled in parameter object and not in Flag object. */ template - /*constexpr*/ Flags& Flags::operator|=(const Flags& rhs) + constexpr Flags& Flags::operator|=(const Flags& rhs) { m_value |= rhs.m_value; @@ -182,7 +182,7 @@ namespace Nz * This will disable flags which are disabled in parameter object and enabled in Flag object (and vice-versa). */ template - /*constexpr*/ Flags& Flags::operator&=(const Flags& rhs) + constexpr Flags& Flags::operator&=(const Flags& rhs) { m_value &= rhs.m_value; @@ -199,7 +199,7 @@ namespace Nz * This will disable flags enabled in both Flags objects and enable those enabled in only one of the Flags objects. */ template - /*constexpr*/ Flags& Flags::operator^=(const Flags& rhs) + constexpr Flags& Flags::operator^=(const Flags& rhs) { m_value ^= rhs.m_value; m_value &= ValueMask; From 72e365efb11fb140d97769e733f309197bd0eb67 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 3 Aug 2018 20:32:49 +0200 Subject: [PATCH 098/194] Fix compilation on Linux --- src/Nazara/Core/Unicode.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Nazara/Core/Unicode.cpp b/src/Nazara/Core/Unicode.cpp index 6b5c10aa7..477a77ff4 100644 --- a/src/Nazara/Core/Unicode.cpp +++ b/src/Nazara/Core/Unicode.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #if NAZARA_CORE_INCLUDE_UNICODEDATA From 49d59d93d8ac4718394a6d7d71083f5657a418b9 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 3 Aug 2018 23:56:52 +0200 Subject: [PATCH 099/194] Revert "Core/Flags: Make operators |= &= and ^= constexpr" This reverts commit a363ae312fc951ba3b9e06e7e67a32bc05e6e879. --- ChangeLog.md | 3 --- include/Nazara/Core/Flags.hpp | 6 +++--- include/Nazara/Core/Flags.inl | 6 +++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 7eb3ce88c..8514bbf26 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -130,9 +130,6 @@ Nazara Engine: - Fixed bug where index wouldn't be used in String::FindLast and String::FindWord - Physics 2D contact callbacks now include an arbiter allowing to query/set parameters about the collision - Added movement with Ctrl in TextAreaWidget -- Added Unicode Data downloader/parser -- Integrated Unicode Data -- Fixed Flags operator |=/&=/^= not being constexpr Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Core/Flags.hpp b/include/Nazara/Core/Flags.hpp index 189ec5c9c..92c97de9e 100644 --- a/include/Nazara/Core/Flags.hpp +++ b/include/Nazara/Core/Flags.hpp @@ -61,9 +61,9 @@ namespace Nz constexpr bool operator==(const Flags& rhs) const; constexpr bool operator!=(const Flags& rhs) const; - constexpr Flags& operator|=(const Flags& rhs); - constexpr Flags& operator&=(const Flags& rhs); - constexpr Flags& operator^=(const Flags& rhs); + /*constexpr*/ Flags& operator|=(const Flags& rhs); + /*constexpr*/ Flags& operator&=(const Flags& rhs); + /*constexpr*/ Flags& operator^=(const Flags& rhs); static constexpr BitField GetFlagValue(E enumValue); diff --git a/include/Nazara/Core/Flags.inl b/include/Nazara/Core/Flags.inl index f74ae2169..2b57a59a8 100644 --- a/include/Nazara/Core/Flags.inl +++ b/include/Nazara/Core/Flags.inl @@ -166,7 +166,7 @@ namespace Nz * This will enable flags which are enabled in parameter object and not in Flag object. */ template - constexpr Flags& Flags::operator|=(const Flags& rhs) + /*constexpr*/ Flags& Flags::operator|=(const Flags& rhs) { m_value |= rhs.m_value; @@ -182,7 +182,7 @@ namespace Nz * This will disable flags which are disabled in parameter object and enabled in Flag object (and vice-versa). */ template - constexpr Flags& Flags::operator&=(const Flags& rhs) + /*constexpr*/ Flags& Flags::operator&=(const Flags& rhs) { m_value &= rhs.m_value; @@ -199,7 +199,7 @@ namespace Nz * This will disable flags enabled in both Flags objects and enable those enabled in only one of the Flags objects. */ template - constexpr Flags& Flags::operator^=(const Flags& rhs) + /*constexpr*/ Flags& Flags::operator^=(const Flags& rhs) { m_value ^= rhs.m_value; m_value &= ValueMask; From b14367375c57b36e95d40ccc1e093afbb433bf56 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 3 Aug 2018 23:57:51 +0200 Subject: [PATCH 100/194] Add missing entries in ChangeLog --- ChangeLog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 8514bbf26..92a2f313a 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -130,6 +130,8 @@ Nazara Engine: - Fixed bug where index wouldn't be used in String::FindLast and String::FindWord - Physics 2D contact callbacks now include an arbiter allowing to query/set parameters about the collision - Added movement with Ctrl in TextAreaWidget +- Added Unicode Data downloader/parser +- Integrated Unicode Data Nazara Development Kit: - Added ImageWidget (#139) From f3ea154da46e37180cfca6f9edfaa19a4a1c7eee Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 3 Aug 2018 23:58:43 +0200 Subject: [PATCH 101/194] Try to reenable AppVeyor artifacts --- appveyor.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 73d011778..8c53f2bd8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -41,9 +41,9 @@ after_build: - cd build && "./premake5.exe" package && cd ../package - 7z a NazaraEngine.7z * && cd .. -#artifacts: -# - path: package/NazaraEngine.7z -# name: 'NazaraEngine-$(CONFIGURATION)-$(PLATFORM)-$(APPVEYOR_REPO_COMMIT)' +artifacts: + - path: package/NazaraEngine.7z + name: 'NazaraEngine-$(CONFIGURATION)-$(PLATFORM)-$(APPVEYOR_REPO_COMMIT)' on_success: - cd tests && "./NazaraUnitTestsServer.exe" From 602992609f19d32c8a2978bb4d5cd4da2366b4f1 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 4 Aug 2018 15:38:05 +0200 Subject: [PATCH 102/194] Sdk/RenderSystem: Add EnableCulling method --- ChangeLog.md | 2 ++ SDK/include/NDK/Systems/RenderSystem.hpp | 6 ++++- SDK/include/NDK/Systems/RenderSystem.inl | 32 +++++++++++++++++++++++- SDK/src/NDK/Systems/RenderSystem.cpp | 9 +++++-- include/Nazara/Graphics/CullingList.hpp | 2 ++ include/Nazara/Graphics/CullingList.inl | 27 ++++++++++++++++++++ 6 files changed, 74 insertions(+), 4 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 92a2f313a..d12b740ab 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -132,6 +132,7 @@ Nazara Engine: - Added movement with Ctrl in TextAreaWidget - Added Unicode Data downloader/parser - Integrated Unicode Data +- Added CullingList::FillWithAllEntries method Nazara Development Kit: - Added ImageWidget (#139) @@ -186,6 +187,7 @@ Nazara Development Kit: - Fixed GraphicsComponent copy constructor not copying scissor rect - Force parent parameter to be present in widgets constructor - Added the possibility to write only specific characters with a predicate in TextAreaWidget +- It is now possible to disable object culling in the RenderSystem # 0.4: diff --git a/SDK/include/NDK/Systems/RenderSystem.hpp b/SDK/include/NDK/Systems/RenderSystem.hpp index 1cfa1eabf..3b9d3f239 100644 --- a/SDK/include/NDK/Systems/RenderSystem.hpp +++ b/SDK/include/NDK/Systems/RenderSystem.hpp @@ -25,12 +25,13 @@ namespace Ndk { public: RenderSystem(); - inline RenderSystem(const RenderSystem& renderSystem); ~RenderSystem() = default; template T& ChangeRenderTechnique(); inline Nz::AbstractRenderTechnique& ChangeRenderTechnique(std::unique_ptr&& renderTechnique); + inline void EnableCulling(bool enable); + inline const Nz::BackgroundRef& GetDefaultBackground() const; inline const Nz::Matrix4f& GetCoordinateSystemMatrix() const; inline Nz::Vector3f GetGlobalForward() const; @@ -38,6 +39,8 @@ namespace Ndk inline Nz::Vector3f GetGlobalUp() const; inline Nz::AbstractRenderTechnique& GetRenderTechnique() const; + inline bool IsCullingEnabled() const; + inline void SetDefaultBackground(Nz::BackgroundRef background); inline void SetGlobalForward(const Nz::Vector3f& direction); inline void SetGlobalRight(const Nz::Vector3f& direction); @@ -72,6 +75,7 @@ namespace Ndk Nz::RenderTexture m_shadowRT; bool m_coordinateSystemInvalidated; bool m_forceRenderQueueInvalidation; + bool m_isCullingEnabled; }; } diff --git a/SDK/include/NDK/Systems/RenderSystem.inl b/SDK/include/NDK/Systems/RenderSystem.inl index 7018ceef2..335026f17 100644 --- a/SDK/include/NDK/Systems/RenderSystem.inl +++ b/SDK/include/NDK/Systems/RenderSystem.inl @@ -2,6 +2,8 @@ // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequisites.hpp +#include + namespace Ndk { /*! @@ -26,7 +28,24 @@ namespace Ndk inline Nz::AbstractRenderTechnique& RenderSystem::ChangeRenderTechnique(std::unique_ptr&& renderTechnique) { m_renderTechnique = std::move(renderTechnique); - return *m_renderTechnique.get(); + return *m_renderTechnique; + } + + /*! + * \brief Enables/disables object culling + * + * Object culling is an algorithm used by the render system to detect invisible objects (which will not appear on screen) before they are rendered. + * This includes Frustum Culling and potentially Occlusion Culling. + * + * Disabling this is not recommended, as the system will draw every object in the world which could induce a performance loss. + * + * \param enable Whether to enable or disable culling + * + * \see IsCullingEnabled + */ + inline void RenderSystem::EnableCulling(bool enable) + { + m_isCullingEnabled = enable; } /*! @@ -89,6 +108,17 @@ namespace Ndk return *m_renderTechnique.get(); } + /*! + * \brief Query if culling is enabled (enabled by default) + * \return True if culling is enabled, false otherwise + * + * \see EnableCulling + */ + inline bool RenderSystem::IsCullingEnabled() const + { + return m_isCullingEnabled; + } + /*! * \brief Sets the background used for rendering * diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index 01ae6b2ac..57da4e78a 100644 --- a/SDK/src/NDK/Systems/RenderSystem.cpp +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -34,7 +34,8 @@ namespace Ndk RenderSystem::RenderSystem() : m_coordinateSystemMatrix(Nz::Matrix4f::Identity()), m_coordinateSystemInvalidated(true), - m_forceRenderQueueInvalidation(false) + m_forceRenderQueueInvalidation(false), + m_isCullingEnabled(true) { ChangeRenderTechnique(); SetDefaultBackground(Nz::ColorBackground::New()); @@ -203,7 +204,11 @@ namespace Ndk bool forceInvalidation = false; - std::size_t visibilityHash = m_drawableCulling.Cull(camComponent.GetFrustum(), &forceInvalidation); + std::size_t visibilityHash; + if (m_isCullingEnabled) + visibilityHash = m_drawableCulling.Cull(camComponent.GetFrustum(), &forceInvalidation); + else + visibilityHash = m_drawableCulling.FillWithAllEntries(); // Always regenerate renderqueue if particle groups are present for now (FIXME) if (!m_lights.empty() || !m_particleGroups.empty()) diff --git a/include/Nazara/Graphics/CullingList.hpp b/include/Nazara/Graphics/CullingList.hpp index af48f2542..df8be7d48 100644 --- a/include/Nazara/Graphics/CullingList.hpp +++ b/include/Nazara/Graphics/CullingList.hpp @@ -41,6 +41,8 @@ namespace Nz std::size_t Cull(const Frustumf& frustum, bool* forceInvalidation = nullptr); + std::size_t FillWithAllEntries(); + NoTestEntry RegisterNoTest(const T* renderable); SphereEntry RegisterSphereTest(const T* renderable); VolumeEntry RegisterVolumeTest(const T* renderable); diff --git a/include/Nazara/Graphics/CullingList.inl b/include/Nazara/Graphics/CullingList.inl index 5580efd8b..55aa8e35c 100644 --- a/include/Nazara/Graphics/CullingList.inl +++ b/include/Nazara/Graphics/CullingList.inl @@ -70,6 +70,33 @@ namespace Nz return visibleHash; } + template + std::size_t CullingList::FillWithAllEntries() + { + m_results.clear(); + + std::size_t visibleHash = 0U; + for (NoTestVisibilityEntry& entry : m_noTestList) + { + m_results.push_back(entry.renderable); + Nz::HashCombine(visibleHash, entry.renderable); + } + + for (SphereVisibilityEntry& entry : m_sphereTestList) + { + m_results.push_back(entry.renderable); + Nz::HashCombine(visibleHash, entry.renderable); + } + + for (VolumeVisibilityEntry& entry : m_volumeTestList) + { + m_results.push_back(entry.renderable); + Nz::HashCombine(visibleHash, entry.renderable); + } + + return visibleHash; + } + template auto CullingList::RegisterNoTest(const T* renderable) -> NoTestEntry { From 5bb16ab016a8dbe88becd5fe38a665f45af5ad26 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 5 Aug 2018 15:09:26 +0200 Subject: [PATCH 103/194] Revert "Sdk/DebugSystem: Fix OBB drawing" This reverts commit a12c72186f96554941207bcbada74fa29dc53fdb. --- SDK/src/NDK/Systems/DebugSystem.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 204737e9a..0da17c352 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -59,6 +59,7 @@ namespace Ndk { NazaraAssert(m_entityOwner, "DebugRenderable has no owner"); + const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); Nz::Boxf aabb = entityGfx.GetBoundingVolume().aabb; @@ -85,14 +86,16 @@ namespace Ndk { NazaraAssert(m_entityOwner, "DebugRenderable has no owner"); + const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); - Nz::OrientedBoxf entityObb = entityGfx.GetBoundingVolume().obb; - Nz::Boxf obb(entityObb.GetCorner(Nz::BoxCorner_NearLeftTop), entityObb.GetCorner(Nz::BoxCorner_FarRightBottom)); + Nz::Boxf obb = entityGfx.GetBoundingVolume().obb.localBox; - Nz::Matrix4f transformMatrix = Nz::Matrix4f::Identity(); - transformMatrix.SetScale(obb.GetLengths()); - transformMatrix.SetTranslation(obb.GetCenter()); + Nz::Matrix4f transformMatrix = instanceData.transformMatrix; + Nz::Vector3f obbCenter = transformMatrix.Transform(obb.GetCenter(), 0.f); //< Apply rotation/scale to obb center, to display it at a correct position + + transformMatrix.ApplyScale(obb.GetLengths()); + transformMatrix.ApplyTranslation(obbCenter); renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); } From 0a5e9e040d0ac8e6043bbb4123a24c3e487fe767 Mon Sep 17 00:00:00 2001 From: Faymoon Date: Tue, 7 Aug 2018 19:08:01 +0200 Subject: [PATCH 104/194] Update PhysicsSystem2D (#179) * Update * Add: [Get/Set]AngularDaming for standardization * Fix: Name error * Add: [Get/Set][AngularDamping/MomentOfInertia] in PhysicsComponent2D * Forgot in last commit * Add: param coordSys in [PhysicsComponent2D/RigidBody2D]::SetMassCenter * Add: Some forgotten inline * Fix little error * Fix: Indentation before case * Move and Change GetCenterOfGravity * Rename m_world into m_physWorld * Rename GetWorld int GetPhysWorld * Update: PhysicsSystem2D became an interface of PhysWorld2D * Update Collison/PhysicsComponent because GetWorld was renamed * Update tests * Update: Make the interface usable with Entity instead of PhysicsComponent * Update: Make GetPhysWorld private * Update PhysicsSystem2D.hpp * Update: indent * Remove: useless blank line * update order(?) * Update PhysicsSystem2D.hpp --- SDK/include/NDK/Systems/PhysicsSystem2D.hpp | 94 ++++++++- SDK/include/NDK/Systems/PhysicsSystem2D.inl | 89 ++++++++- .../NDK/Components/CollisionComponent2D.cpp | 2 +- SDK/src/NDK/Components/PhysicsComponent2D.cpp | 2 +- SDK/src/NDK/Systems/PhysicsSystem2D.cpp | 186 +++++++++++++++++- tests/SDK/NDK/Systems/PhysicsSystem2D.cpp | 4 +- 6 files changed, 359 insertions(+), 18 deletions(-) diff --git a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp index 66c8b1c61..95b6767c4 100644 --- a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp +++ b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp @@ -16,24 +16,112 @@ namespace Ndk { class NDK_API PhysicsSystem2D : public System { + friend class CollisionComponent2D; + friend class PhysicsComponent2D; + + using ContactEndCallback = std::function; + using ContactPreSolveCallback = std::function; + using ContactPostSolveCallback = std::function; + using ContactStartCallback = std::function; + + using DebugDrawCircleCallback = std::function; + using DebugDrawDotCallback = std::function; + using DebugDrawPolygonCallback = std::function; + using DebugDrawSegmentCallback = std::function; + using DebugDrawTickSegmentCallback = std::function; + using DebugDrawGetColorCallback = std::function; + public: + struct Callback; + struct DebugDrawOptions; + struct NearestQueryResult; + struct RaycastHit; + PhysicsSystem2D(); PhysicsSystem2D(const PhysicsSystem2D& system); ~PhysicsSystem2D() = default; - Nz::PhysWorld2D& GetWorld(); - const Nz::PhysWorld2D& GetWorld() const; + void DebugDraw(const DebugDrawOptions& options, bool drawShapes = true, bool drawConstraints = true, bool drawCollisions = true); + + inline float GetDamping() const; + inline Nz::Vector2f GetGravity() const; + inline std::size_t GetIterationCount() const; + inline std::size_t GetMaxStepCount() const; + inline float GetStepSize() const; + + bool NearestBodyQuery(const Nz::Vector2f& from, float maxDistance, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, EntityHandle* nearestBody = nullptr); + bool NearestBodyQuery(const Nz::Vector2f& from, float maxDistance, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, NearestQueryResult* result); + + bool RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* hitInfos); + bool RaycastQueryFirst(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, RaycastHit* hitInfo = nullptr); + + void RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* bodies); + + void RegisterCallbacks(unsigned int collisionId, const Callback& callbacks); + void RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, const Callback& callbacks); + + inline void SetDamping(float dampingValue); + inline void SetGravity(const Nz::Vector2f& gravity); + inline void SetIterationCount(std::size_t iterationCount); + inline void SetMaxStepCount(std::size_t maxStepCount); + inline void SetStepSize(float stepSize); + + inline void UseSpatialHash(float cellSize, std::size_t entityCount); + + struct Callback + { + ContactEndCallback endCallback = nullptr; + ContactPreSolveCallback preSolveCallback = nullptr; + ContactPostSolveCallback postSolveCallback = nullptr; + ContactStartCallback startCallback = nullptr; + void* userdata; + }; + + struct DebugDrawOptions + { + Nz::Color constraintColor; + Nz::Color collisionPointColor; + Nz::Color shapeOutlineColor; + + DebugDrawCircleCallback circleCallback; + DebugDrawGetColorCallback colorCallback; + DebugDrawDotCallback dotCallback; + DebugDrawPolygonCallback polygonCallback; + DebugDrawSegmentCallback segmentCallback; + DebugDrawTickSegmentCallback thickSegmentCallback; + + void* userdata; + }; + + struct NearestQueryResult + { + EntityHandle nearestBody; + Nz::Vector2f closestPoint; + Nz::Vector2f fraction; + float distance; + }; + + struct RaycastHit + { + EntityHandle body; + Nz::Vector2f hitPos; + Nz::Vector2f hitNormal; + float fraction; + }; static SystemIndex systemIndex; private: void CreatePhysWorld() const; + const EntityHandle& GetEntityFromBody(const Nz::RigidBody2D& body) const; + Nz::PhysWorld2D& GetPhysWorld(); + const Nz::PhysWorld2D& GetPhysWorld() const; void OnEntityValidation(Entity* entity, bool justAdded) override; void OnUpdate(float elapsedTime) override; EntityList m_dynamicObjects; EntityList m_staticObjects; - mutable std::unique_ptr m_world; ///TODO: std::optional (Should I make a Nz::Optional class?) + mutable std::unique_ptr m_physWorld; ///TODO: std::optional (Should I make a Nz::Optional class?) }; } diff --git a/SDK/include/NDK/Systems/PhysicsSystem2D.inl b/SDK/include/NDK/Systems/PhysicsSystem2D.inl index 5f0755cff..cc1010c1f 100644 --- a/SDK/include/NDK/Systems/PhysicsSystem2D.inl +++ b/SDK/include/NDK/Systems/PhysicsSystem2D.inl @@ -4,17 +4,94 @@ namespace Ndk { + inline float PhysicsSystem2D::GetDamping() const + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + return m_physWorld->GetDamping(); + } + + inline Nz::Vector2f PhysicsSystem2D::GetGravity() const + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + return m_physWorld->GetGravity(); + } + + inline std::size_t PhysicsSystem2D::GetIterationCount() const + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + return m_physWorld->GetIterationCount(); + } + + inline std::size_t PhysicsSystem2D::GetMaxStepCount() const + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + return m_physWorld->GetMaxStepCount(); + } + + inline float PhysicsSystem2D::GetStepSize() const + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + return m_physWorld->GetStepSize(); + } + + inline void PhysicsSystem2D::SetDamping(float dampingValue) + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + m_physWorld->SetDamping(dampingValue); + } + + inline void PhysicsSystem2D::SetGravity(const Nz::Vector2f& gravity) + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + m_physWorld->SetGravity(gravity); + } + + inline void PhysicsSystem2D::SetIterationCount(std::size_t iterationCount) + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + m_physWorld->SetIterationCount(iterationCount); + } + + inline void PhysicsSystem2D::SetMaxStepCount(std::size_t maxStepCount) + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + m_physWorld->SetMaxStepCount(maxStepCount); + } + + inline void PhysicsSystem2D::SetStepSize(float stepSize) + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + m_physWorld->SetStepSize(stepSize); + } + + inline void PhysicsSystem2D::UseSpatialHash(float cellSize, std::size_t entityCount) + { + NazaraAssert(m_physWorld, "Invalid physics world"); + + m_physWorld->UseSpatialHash(cellSize, entityCount); + } + /*! * \brief Gets the physical world * \return A reference to the physical world */ - inline Nz::PhysWorld2D& PhysicsSystem2D::GetWorld() + inline Nz::PhysWorld2D& PhysicsSystem2D::GetPhysWorld() { - if (!m_world) + if (!m_physWorld) CreatePhysWorld(); - return *m_world; + return *m_physWorld; } /*! @@ -22,11 +99,11 @@ namespace Ndk * \return A constant reference to the physical world */ - inline const Nz::PhysWorld2D& PhysicsSystem2D::GetWorld() const + inline const Nz::PhysWorld2D& PhysicsSystem2D::GetPhysWorld() const { - if (!m_world) + if (!m_physWorld) CreatePhysWorld(); - return *m_world; + return *m_physWorld; } } diff --git a/SDK/src/NDK/Components/CollisionComponent2D.cpp b/SDK/src/NDK/Components/CollisionComponent2D.cpp index 9e88f396b..fd78e6c97 100644 --- a/SDK/src/NDK/Components/CollisionComponent2D.cpp +++ b/SDK/src/NDK/Components/CollisionComponent2D.cpp @@ -56,7 +56,7 @@ namespace Ndk NazaraAssert(entityWorld, "Entity must have world"); NazaraAssert(entityWorld->HasSystem(), "World must have a physics system"); - Nz::PhysWorld2D& physWorld = entityWorld->GetSystem().GetWorld(); + Nz::PhysWorld2D& physWorld = entityWorld->GetSystem().GetPhysWorld(); m_staticBody = std::make_unique(&physWorld, 0.f, m_geom); m_staticBody->SetUserdata(reinterpret_cast(static_cast(m_entity->GetId()))); diff --git a/SDK/src/NDK/Components/PhysicsComponent2D.cpp b/SDK/src/NDK/Components/PhysicsComponent2D.cpp index e2e199a22..62cd922a4 100644 --- a/SDK/src/NDK/Components/PhysicsComponent2D.cpp +++ b/SDK/src/NDK/Components/PhysicsComponent2D.cpp @@ -29,7 +29,7 @@ namespace Ndk World* entityWorld = m_entity->GetWorld(); NazaraAssert(entityWorld->HasSystem(), "World must have a 2D physics system"); - Nz::PhysWorld2D& world = entityWorld->GetSystem().GetWorld(); + Nz::PhysWorld2D& world = entityWorld->GetSystem().GetPhysWorld(); Nz::Collider2DRef geom; if (m_entity->HasComponent()) diff --git a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp index 95c3f426b..ec615b041 100644 --- a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp +++ b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -33,9 +34,108 @@ namespace Ndk void PhysicsSystem2D::CreatePhysWorld() const { - NazaraAssert(!m_world, "Physics world should not be created twice"); + NazaraAssert(!m_physWorld, "Physics world should not be created twice"); - m_world = std::make_unique(); + m_physWorld = std::make_unique(); + } + + void PhysicsSystem2D::DebugDraw(const DebugDrawOptions& options, bool drawShapes, bool drawConstraints, bool drawCollisions) + { + Nz::PhysWorld2D::DebugDrawOptions worldOptions{ options.constraintColor, options.collisionPointColor, options.shapeOutlineColor }; + + if (options.colorCallback) + { + worldOptions.colorCallback = [&options, this](Nz::RigidBody2D& body, std::size_t shapeIndex, void* userdata) + { + return options.colorCallback(GetEntityFromBody(body), shapeIndex, userdata); + }; + } + + worldOptions.circleCallback = options.circleCallback; + worldOptions.dotCallback = options.dotCallback; + worldOptions.polygonCallback = options.polygonCallback; + worldOptions.segmentCallback = options.segmentCallback; + worldOptions.thickSegmentCallback = options.thickSegmentCallback; + + worldOptions.userdata = options.userdata; + + m_physWorld->DebugDraw(worldOptions, drawShapes, drawConstraints, drawCollisions); + } + + const EntityHandle& PhysicsSystem2D::GetEntityFromBody(const Nz::RigidBody2D& body) const + { + auto entityId = static_cast(reinterpret_cast(body.GetUserdata())); + + auto& world = GetWorld(); + + NazaraAssert(world.IsEntityIdValid(entityId), "All Bodies of this world must be part of the physics world by using PhysicsComponent"); + + return world.GetEntity(entityId); + } + + bool PhysicsSystem2D::NearestBodyQuery(const Nz::Vector2f& from, float maxDistance, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, EntityHandle* nearestBody) + { + Nz::RigidBody2D* body; + bool res = m_physWorld->NearestBodyQuery(from, maxDistance, collisionGroup, categoryMask, collisionMask, &body); + + (*nearestBody) = GetEntityFromBody(*body); + + return res; + } + + bool PhysicsSystem2D::NearestBodyQuery(const Nz::Vector2f& from, float maxDistance, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, NearestQueryResult* result) + { + Nz::PhysWorld2D::NearestQueryResult queryResult; + bool res = m_physWorld->NearestBodyQuery(from, maxDistance, collisionGroup, categoryMask, collisionMask, &queryResult); + + result->nearestBody = GetEntityFromBody(*queryResult.nearestBody); + result->closestPoint = std::move(queryResult.closestPoint); + result->fraction = std::move(queryResult.fraction); + result->distance = queryResult.distance; + + return res; + } + + bool PhysicsSystem2D::RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* hitInfos) + { + std::vector queryResult; + bool res = m_physWorld->RaycastQuery(from, to, radius, collisionGroup, categoryMask, collisionMask, &queryResult); + + for (auto& hitResult : queryResult) + { + hitInfos->push_back({ + GetEntityFromBody(*hitResult.nearestBody), + std::move(hitResult.hitPos), + std::move(hitResult.hitNormal), + hitResult.fraction + }); + } + + return res; + } + + bool PhysicsSystem2D::RaycastQueryFirst(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, RaycastHit* hitInfo) + { + Nz::PhysWorld2D::RaycastHit queryResult; + bool res = m_physWorld->RaycastQueryFirst(from, to, radius, collisionGroup, categoryMask, collisionMask, &queryResult); + + hitInfo->body = GetEntityFromBody(*queryResult.nearestBody); + hitInfo->hitPos = std::move(queryResult.hitPos); + hitInfo->hitNormal = std::move(queryResult.hitNormal); + hitInfo->fraction = queryResult.fraction; + + return res; + } + + void PhysicsSystem2D::RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* bodies) + { + std::vector queryResult; + m_physWorld->RegionQuery(boundingBox, collisionGroup, categoryMask, collisionMask, &queryResult); + + for (auto& body : queryResult) + { + bodies->emplace_back(GetEntityFromBody(*body)); + } } /*! @@ -58,7 +158,7 @@ namespace Ndk auto& entities = (entity->HasComponent()) ? m_dynamicObjects : m_staticObjects; entities.Insert(entity); - if (!m_world) + if (!m_physWorld) CreatePhysWorld(); } @@ -70,10 +170,10 @@ namespace Ndk void PhysicsSystem2D::OnUpdate(float elapsedTime) { - if (!m_world) + if (!m_physWorld) return; - m_world->Step(elapsedTime); + m_physWorld->Step(elapsedTime); for (const Ndk::EntityHandle& entity : m_dynamicObjects) { @@ -124,5 +224,81 @@ namespace Ndk } } + void PhysicsSystem2D::RegisterCallbacks(unsigned int collisionId, const Callback& callbacks) + { + Nz::PhysWorld2D::Callback worldCallbacks; + + if (callbacks.endCallback) + { + worldCallbacks.endCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + { + callbacks.endCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + }; + } + if (callbacks.preSolveCallback) + { + worldCallbacks.preSolveCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + { + return callbacks.preSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + }; + } + if (callbacks.postSolveCallback) + { + worldCallbacks.postSolveCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + { + callbacks.preSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + }; + } + if (callbacks.startCallback) + { + worldCallbacks.startCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + { + return callbacks.startCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + }; + } + + worldCallbacks.userdata = callbacks.userdata; + + m_physWorld->RegisterCallbacks(collisionId, worldCallbacks); + } + + void PhysicsSystem2D::RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, const Callback& callbacks) + { + Nz::PhysWorld2D::Callback worldCallbacks{}; + + if (callbacks.endCallback) + { + worldCallbacks.endCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + { + callbacks.endCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + }; + } + if (callbacks.preSolveCallback) + { + worldCallbacks.preSolveCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + { + return callbacks.preSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + }; + } + if (callbacks.postSolveCallback) + { + worldCallbacks.postSolveCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + { + callbacks.preSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + }; + } + if (callbacks.startCallback) + { + worldCallbacks.startCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + { + return callbacks.startCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + }; + } + + worldCallbacks.userdata = callbacks.userdata; + + m_physWorld->RegisterCallbacks(collisionIdA, collisionIdB, worldCallbacks); + } + SystemIndex PhysicsSystem2D::systemIndex; } diff --git a/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp b/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp index 53808dc42..3cda3f0f1 100644 --- a/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp +++ b/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp @@ -21,7 +21,7 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") Ndk::PhysicsComponent2D& physicsComponent2D = movingEntity->AddComponent(); world.GetSystem().SetMaximumUpdateRate(0.f); - world.GetSystem().GetWorld().SetMaxStepCount(std::numeric_limits::max()); + world.GetSystem().SetMaxStepCount(std::numeric_limits::max()); WHEN("We update the world") { @@ -100,7 +100,7 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") WHEN("We put a force on it") { - float stepSize = world.GetSystem().GetWorld().GetStepSize(); + float stepSize = world.GetSystem().GetStepSize(); Nz::Vector2f velocity = Nz::Vector2f::UnitX(); physicsComponent2D.AddForce(velocity / stepSize); world.Update(1.f); From fd2c775d3e606adfff7b4740c434ea16def66a20 Mon Sep 17 00:00:00 2001 From: Faymoon Date: Wed, 8 Aug 2018 10:34:34 +0200 Subject: [PATCH 105/194] Update ChangeLog.md (#180) --- ChangeLog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index d12b740ab..847ddc992 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -188,6 +188,8 @@ Nazara Development Kit: - Force parent parameter to be present in widgets constructor - Added the possibility to write only specific characters with a predicate in TextAreaWidget - It is now possible to disable object culling in the RenderSystem +- Make Nz::PhysWorld2D& Ndk::PhysicsSystem2D::GetWorld private and rename it into GetPhysWorld +- Make Ndk::PhysicsSystem2D an interface of Nz::PhysWorld2D # 0.4: From 9ecfe316371a46422566c4ba69a721e97aeff81d Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 8 Aug 2018 10:35:49 +0200 Subject: [PATCH 106/194] Build: Copy .dll only if host is Windows --- ChangeLog.md | 1 + build/scripts/common.lua | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index 847ddc992..9fc275f46 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -17,6 +17,7 @@ Miscellaneous: - NDEBUG is now defined in Release - Replaced typedefs keywords with modern using keywords - When supported, projects are now parts of a virtual "workspace group" according to their kind +- Fixed .dll copy when building Nazara occuring on Linux when targeting Windows (MinGW) Nazara Engine: - VertexMapper:GetComponentPtr no longer throw an error if component is disabled or incompatible with template type, instead a null pointer is returned. diff --git a/build/scripts/common.lua b/build/scripts/common.lua index 5c1298fb1..20472cf0d 100644 --- a/build/scripts/common.lua +++ b/build/scripts/common.lua @@ -608,7 +608,7 @@ function NazaraBuild:LoadConfig() end function NazaraBuild:MakeInstallCommands(infoTable) - if (os.istarget("windows")) then + if (os.ishost("windows")) then filter("kind:SharedLib") postbuildmessage("Copying " .. infoTable.Name .. " library and its dependencies to install/executable directories...") From beca6e7dd565f2e7c281ba6b388fc03498812120 Mon Sep 17 00:00:00 2001 From: Faymoon Date: Tue, 14 Aug 2018 18:44:41 +0200 Subject: [PATCH 107/194] little fixes (#183) * Update * Add: [Get/Set]AngularDaming for standardization * Fix: Name error * Add: [Get/Set][AngularDamping/MomentOfInertia] in PhysicsComponent2D * Forgot in last commit * Add: param coordSys in [PhysicsComponent2D/RigidBody2D]::SetMassCenter * Add: Some forgotten inline * Fix little error * Fix: Indentation before case * Move and Change GetCenterOfGravity * Rename m_world into m_physWorld * Rename GetWorld int GetPhysWorld * Update: PhysicsSystem2D became an interface of PhysWorld2D * Update Collison/PhysicsComponent because GetWorld was renamed * Update tests * Update: Make the interface usable with Entity instead of PhysicsComponent * Update: Make GetPhysWorld private * Update PhysicsSystem2D.hpp * Update: indent * Remove: useless blank line * update order(?) * Update PhysicsSystem2D.hpp * Add calls to GetPhysWorld to attempt a nullptr value * update include * little fix * add some missing inline --- .../NDK/Components/PhysicsComponent3D.hpp | 70 +++++++++---------- SDK/include/NDK/Systems/PhysicsSystem2D.hpp | 4 +- SDK/include/NDK/Systems/PhysicsSystem2D.inl | 44 +++--------- SDK/src/NDK/Systems/PhysicsSystem2D.cpp | 12 ++-- src/Nazara/Network/Win32/SocketImpl.cpp | 2 +- 5 files changed, 55 insertions(+), 77 deletions(-) diff --git a/SDK/include/NDK/Components/PhysicsComponent3D.hpp b/SDK/include/NDK/Components/PhysicsComponent3D.hpp index 98e36079a..d7c9ddd52 100644 --- a/SDK/include/NDK/Components/PhysicsComponent3D.hpp +++ b/SDK/include/NDK/Components/PhysicsComponent3D.hpp @@ -23,49 +23,49 @@ namespace Ndk PhysicsComponent3D(const PhysicsComponent3D& physics); ~PhysicsComponent3D() = default; - void AddForce(const Nz::Vector3f& force, Nz::CoordSys coordSys = Nz::CoordSys_Global); - void AddForce(const Nz::Vector3f& force, const Nz::Vector3f& point, Nz::CoordSys coordSys = Nz::CoordSys_Global); - void AddTorque(const Nz::Vector3f& torque, Nz::CoordSys coordSys = Nz::CoordSys_Global); + inline void AddForce(const Nz::Vector3f& force, Nz::CoordSys coordSys = Nz::CoordSys_Global); + inline void AddForce(const Nz::Vector3f& force, const Nz::Vector3f& point, Nz::CoordSys coordSys = Nz::CoordSys_Global); + inline void AddTorque(const Nz::Vector3f& torque, Nz::CoordSys coordSys = Nz::CoordSys_Global); - void EnableAutoSleep(bool autoSleep); - void EnableNodeSynchronization(bool nodeSynchronization); + inline void EnableAutoSleep(bool autoSleep); + inline void EnableNodeSynchronization(bool nodeSynchronization); - Nz::Boxf GetAABB() const; - Nz::Vector3f GetAngularDamping() const; - Nz::Vector3f GetAngularVelocity() const; - float GetGravityFactor() const; - float GetLinearDamping() const; - Nz::Vector3f GetLinearVelocity() const; - float GetMass() const; - Nz::Vector3f GetMassCenter(Nz::CoordSys coordSys = Nz::CoordSys_Local) const; - const Nz::Matrix4f& GetMatrix() const; - Nz::Vector3f GetPosition() const; - Nz::Quaternionf GetRotation() const; + inline Nz::Boxf GetAABB() const; + inline Nz::Vector3f GetAngularDamping() const; + inline Nz::Vector3f GetAngularVelocity() const; + inline float GetGravityFactor() const; + inline float GetLinearDamping() const; + inline Nz::Vector3f GetLinearVelocity() const; + inline float GetMass() const; + inline Nz::Vector3f GetMassCenter(Nz::CoordSys coordSys = Nz::CoordSys_Local) const; + inline const Nz::Matrix4f& GetMatrix() const; + inline Nz::Vector3f GetPosition() const; + inline Nz::Quaternionf GetRotation() const; - bool IsAutoSleepEnabled() const; - bool IsMoveable() const; - bool IsNodeSynchronizationEnabled() const; - bool IsSleeping() const; + inline bool IsAutoSleepEnabled() const; + inline bool IsMoveable() const; + inline bool IsNodeSynchronizationEnabled() const; + inline bool IsSleeping() const; - void SetAngularDamping(const Nz::Vector3f& angularDamping); - void SetAngularVelocity(const Nz::Vector3f& angularVelocity); - void SetGravityFactor(float gravityFactor); - void SetLinearDamping(float damping); - void SetLinearVelocity(const Nz::Vector3f& velocity); - void SetMass(float mass); - void SetMassCenter(const Nz::Vector3f& center); - void SetMaterial(const Nz::String& materialName); - void SetMaterial(int materialIndex); - void SetPosition(const Nz::Vector3f& position); - void SetRotation(const Nz::Quaternionf& rotation); + inline void SetAngularDamping(const Nz::Vector3f& angularDamping); + inline void SetAngularVelocity(const Nz::Vector3f& angularVelocity); + inline void SetGravityFactor(float gravityFactor); + inline void SetLinearDamping(float damping); + inline void SetLinearVelocity(const Nz::Vector3f& velocity); + inline void SetMass(float mass); + inline void SetMassCenter(const Nz::Vector3f& center); + inline void SetMaterial(const Nz::String& materialName); + inline void SetMaterial(int materialIndex); + inline void SetPosition(const Nz::Vector3f& position); + inline void SetRotation(const Nz::Quaternionf& rotation); static ComponentIndex componentIndex; private: - void ApplyPhysicsState(Nz::RigidBody3D& rigidBody) const; - void CopyPhysicsState(const Nz::RigidBody3D& rigidBody); - Nz::RigidBody3D* GetRigidBody(); - const Nz::RigidBody3D& GetRigidBody() const; + inline void ApplyPhysicsState(Nz::RigidBody3D& rigidBody) const; + inline void CopyPhysicsState(const Nz::RigidBody3D& rigidBody); + inline Nz::RigidBody3D* GetRigidBody(); + inline const Nz::RigidBody3D& GetRigidBody() const; void OnAttached() override; void OnComponentAttached(BaseComponent& component) override; diff --git a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp index 95b6767c4..1683fc7fb 100644 --- a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp +++ b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp @@ -114,8 +114,8 @@ namespace Ndk private: void CreatePhysWorld() const; const EntityHandle& GetEntityFromBody(const Nz::RigidBody2D& body) const; - Nz::PhysWorld2D& GetPhysWorld(); - const Nz::PhysWorld2D& GetPhysWorld() const; + inline Nz::PhysWorld2D& GetPhysWorld(); + inline const Nz::PhysWorld2D& GetPhysWorld() const; void OnEntityValidation(Entity* entity, bool justAdded) override; void OnUpdate(float elapsedTime) override; diff --git a/SDK/include/NDK/Systems/PhysicsSystem2D.inl b/SDK/include/NDK/Systems/PhysicsSystem2D.inl index cc1010c1f..b8e7c61a2 100644 --- a/SDK/include/NDK/Systems/PhysicsSystem2D.inl +++ b/SDK/include/NDK/Systems/PhysicsSystem2D.inl @@ -6,79 +6,57 @@ namespace Ndk { inline float PhysicsSystem2D::GetDamping() const { - NazaraAssert(m_physWorld, "Invalid physics world"); - - return m_physWorld->GetDamping(); + return GetPhysWorld().GetDamping(); } inline Nz::Vector2f PhysicsSystem2D::GetGravity() const { - NazaraAssert(m_physWorld, "Invalid physics world"); - - return m_physWorld->GetGravity(); + return GetPhysWorld().GetGravity(); } inline std::size_t PhysicsSystem2D::GetIterationCount() const { - NazaraAssert(m_physWorld, "Invalid physics world"); - - return m_physWorld->GetIterationCount(); + return GetPhysWorld().GetIterationCount(); } inline std::size_t PhysicsSystem2D::GetMaxStepCount() const { - NazaraAssert(m_physWorld, "Invalid physics world"); - - return m_physWorld->GetMaxStepCount(); + return GetPhysWorld().GetMaxStepCount(); } inline float PhysicsSystem2D::GetStepSize() const { - NazaraAssert(m_physWorld, "Invalid physics world"); - - return m_physWorld->GetStepSize(); + return GetPhysWorld().GetStepSize(); } inline void PhysicsSystem2D::SetDamping(float dampingValue) { - NazaraAssert(m_physWorld, "Invalid physics world"); - - m_physWorld->SetDamping(dampingValue); + GetPhysWorld().SetDamping(dampingValue); } inline void PhysicsSystem2D::SetGravity(const Nz::Vector2f& gravity) { - NazaraAssert(m_physWorld, "Invalid physics world"); - - m_physWorld->SetGravity(gravity); + GetPhysWorld().SetGravity(gravity); } inline void PhysicsSystem2D::SetIterationCount(std::size_t iterationCount) { - NazaraAssert(m_physWorld, "Invalid physics world"); - - m_physWorld->SetIterationCount(iterationCount); + GetPhysWorld().SetIterationCount(iterationCount); } inline void PhysicsSystem2D::SetMaxStepCount(std::size_t maxStepCount) { - NazaraAssert(m_physWorld, "Invalid physics world"); - - m_physWorld->SetMaxStepCount(maxStepCount); + GetPhysWorld().SetMaxStepCount(maxStepCount); } inline void PhysicsSystem2D::SetStepSize(float stepSize) { - NazaraAssert(m_physWorld, "Invalid physics world"); - - m_physWorld->SetStepSize(stepSize); + GetPhysWorld().SetStepSize(stepSize); } inline void PhysicsSystem2D::UseSpatialHash(float cellSize, std::size_t entityCount) { - NazaraAssert(m_physWorld, "Invalid physics world"); - - m_physWorld->UseSpatialHash(cellSize, entityCount); + GetPhysWorld().UseSpatialHash(cellSize, entityCount); } /*! diff --git a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp index ec615b041..c717fcf80 100644 --- a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp +++ b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp @@ -59,7 +59,7 @@ namespace Ndk worldOptions.userdata = options.userdata; - m_physWorld->DebugDraw(worldOptions, drawShapes, drawConstraints, drawCollisions); + GetPhysWorld().DebugDraw(worldOptions, drawShapes, drawConstraints, drawCollisions); } const EntityHandle& PhysicsSystem2D::GetEntityFromBody(const Nz::RigidBody2D& body) const @@ -76,7 +76,7 @@ namespace Ndk bool PhysicsSystem2D::NearestBodyQuery(const Nz::Vector2f& from, float maxDistance, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, EntityHandle* nearestBody) { Nz::RigidBody2D* body; - bool res = m_physWorld->NearestBodyQuery(from, maxDistance, collisionGroup, categoryMask, collisionMask, &body); + bool res = GetPhysWorld().NearestBodyQuery(from, maxDistance, collisionGroup, categoryMask, collisionMask, &body); (*nearestBody) = GetEntityFromBody(*body); @@ -86,7 +86,7 @@ namespace Ndk bool PhysicsSystem2D::NearestBodyQuery(const Nz::Vector2f& from, float maxDistance, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, NearestQueryResult* result) { Nz::PhysWorld2D::NearestQueryResult queryResult; - bool res = m_physWorld->NearestBodyQuery(from, maxDistance, collisionGroup, categoryMask, collisionMask, &queryResult); + bool res = GetPhysWorld().NearestBodyQuery(from, maxDistance, collisionGroup, categoryMask, collisionMask, &queryResult); result->nearestBody = GetEntityFromBody(*queryResult.nearestBody); result->closestPoint = std::move(queryResult.closestPoint); @@ -99,7 +99,7 @@ namespace Ndk bool PhysicsSystem2D::RaycastQuery(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* hitInfos) { std::vector queryResult; - bool res = m_physWorld->RaycastQuery(from, to, radius, collisionGroup, categoryMask, collisionMask, &queryResult); + bool res = GetPhysWorld().RaycastQuery(from, to, radius, collisionGroup, categoryMask, collisionMask, &queryResult); for (auto& hitResult : queryResult) { @@ -117,7 +117,7 @@ namespace Ndk bool PhysicsSystem2D::RaycastQueryFirst(const Nz::Vector2f& from, const Nz::Vector2f& to, float radius, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, RaycastHit* hitInfo) { Nz::PhysWorld2D::RaycastHit queryResult; - bool res = m_physWorld->RaycastQueryFirst(from, to, radius, collisionGroup, categoryMask, collisionMask, &queryResult); + bool res = GetPhysWorld().RaycastQueryFirst(from, to, radius, collisionGroup, categoryMask, collisionMask, &queryResult); hitInfo->body = GetEntityFromBody(*queryResult.nearestBody); hitInfo->hitPos = std::move(queryResult.hitPos); @@ -130,7 +130,7 @@ namespace Ndk void PhysicsSystem2D::RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* bodies) { std::vector queryResult; - m_physWorld->RegionQuery(boundingBox, collisionGroup, categoryMask, collisionMask, &queryResult); + GetPhysWorld().RegionQuery(boundingBox, collisionGroup, categoryMask, collisionMask, &queryResult); for (auto& body : queryResult) { diff --git a/src/Nazara/Network/Win32/SocketImpl.cpp b/src/Nazara/Network/Win32/SocketImpl.cpp index 15b89801b..097927dc6 100644 --- a/src/Nazara/Network/Win32/SocketImpl.cpp +++ b/src/Nazara/Network/Win32/SocketImpl.cpp @@ -29,7 +29,7 @@ struct tcp_keepalive #define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4) #endif -#include +#include #include From d83c12c2d3e906cb1ff32fbdf4c397982cbd99ea Mon Sep 17 00:00:00 2001 From: S6066 Date: Tue, 14 Aug 2018 20:53:26 +0200 Subject: [PATCH 108/194] TextAreaWidget: Make Tab writable (#175) * TextAreaWidget: Make Tab writable * Implement Tab ena/disabling, disable it by default * Log change * Rename Tab Enabling function * Add useful Write/Delete functions * Finished! * whoops * Fix everything * whoops * I don't know why but it works * whoops * I'M PUSHING. --- ChangeLog.md | 1 + SDK/include/NDK/Widgets/TextAreaWidget.hpp | 12 +- SDK/include/NDK/Widgets/TextAreaWidget.inl | 25 ++++ SDK/src/NDK/Widgets/TextAreaWidget.cpp | 131 +++++++++++++++------ 4 files changed, 128 insertions(+), 41 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 9fc275f46..da3410fb7 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -188,6 +188,7 @@ Nazara Development Kit: - Fixed GraphicsComponent copy constructor not copying scissor rect - Force parent parameter to be present in widgets constructor - Added the possibility to write only specific characters with a predicate in TextAreaWidget +- Enable write of Tab character in TextAreaWidget - It is now possible to disable object culling in the RenderSystem - Make Nz::PhysWorld2D& Ndk::PhysicsSystem2D::GetWorld private and rename it into GetPhysWorld - Make Ndk::PhysicsSystem2D an interface of Nz::PhysWorld2D diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.hpp b/SDK/include/NDK/Widgets/TextAreaWidget.hpp index 4c3168c4e..f57e7a049 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.hpp +++ b/SDK/include/NDK/Widgets/TextAreaWidget.hpp @@ -32,8 +32,12 @@ namespace Ndk //virtual TextAreaWidget* Clone() const = 0; - inline void EnableMultiline(bool enable = true); + inline void EnableMultiline(bool enable = true); + inline void EnableTabWriting(bool enable = true); + + inline void Erase(std::size_t glyphPosition); + void Erase(std::size_t firstGlyph, std::size_t lastGlyph); void EraseSelection(); inline CharacterFilter GetCharacterFilter() const; @@ -52,6 +56,7 @@ namespace Ndk inline bool IsMultilineEnabled() const; inline bool IsReadOnly() const; + inline bool IsTabWritingEnabled() const; inline void MoveCursor(int offset); inline void MoveCursor(const Nz::Vector2i& offset); @@ -68,7 +73,9 @@ namespace Ndk inline void SetText(const Nz::String& text); inline void SetTextColor(const Nz::Color& text); - void Write(const Nz::String& text); + inline void Write(const Nz::String& text); + inline void Write(const Nz::String& text, const Nz::Vector2ui& glyphPosition); + void Write(const Nz::String& text, std::size_t glyphPosition); TextAreaWidget& operator=(const TextAreaWidget&) = delete; TextAreaWidget& operator=(TextAreaWidget&&) = default; @@ -115,6 +122,7 @@ namespace Ndk bool m_isMouseButtonDown; bool m_multiLineEnabled; bool m_readOnly; + bool m_tabEnabled; // writes (Shift+)Tab character if set to true }; } diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.inl b/SDK/include/NDK/Widgets/TextAreaWidget.inl index 7b49ddb26..88be7520a 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.inl +++ b/SDK/include/NDK/Widgets/TextAreaWidget.inl @@ -23,6 +23,16 @@ namespace Ndk m_multiLineEnabled = enable; } + inline void TextAreaWidget::EnableTabWriting(bool enable) + { + m_tabEnabled = enable; + } + + inline void TextAreaWidget::Erase(std::size_t glyphPosition) + { + Erase(glyphPosition, glyphPosition + 1U); + } + inline TextAreaWidget::CharacterFilter TextAreaWidget::GetCharacterFilter() const { return m_characterFilter; @@ -102,6 +112,11 @@ namespace Ndk return m_multiLineEnabled; } + inline bool TextAreaWidget::IsTabWritingEnabled() const + { + return m_tabEnabled; + } + inline bool TextAreaWidget::IsReadOnly() const { return m_readOnly; @@ -233,4 +248,14 @@ namespace Ndk m_textSprite->Update(m_drawer); } + + inline void TextAreaWidget::Write(const Nz::String& text) + { + Write(text, GetGlyphIndex(m_cursorPositionBegin)); + } + + inline void TextAreaWidget::Write(const Nz::String& text, const Nz::Vector2ui& glyphPosition) + { + Write(text, GetGlyphIndex(glyphPosition)); + } } diff --git a/SDK/src/NDK/Widgets/TextAreaWidget.cpp b/SDK/src/NDK/Widgets/TextAreaWidget.cpp index 334a78079..34ebac579 100644 --- a/SDK/src/NDK/Widgets/TextAreaWidget.cpp +++ b/SDK/src/NDK/Widgets/TextAreaWidget.cpp @@ -17,7 +17,8 @@ namespace Ndk m_cursorPositionEnd(0U, 0U), m_isMouseButtonDown(false), m_multiLineEnabled(false), - m_readOnly(false) + m_readOnly(false), + m_tabEnabled(false) { m_cursorEntity = CreateEntity(true); m_cursorEntity->AddComponent(); @@ -71,26 +72,41 @@ namespace Ndk OnTextChanged(this, m_text); } + void TextAreaWidget::Erase(std::size_t firstGlyph, std::size_t lastGlyph) + { + if (firstGlyph > lastGlyph) + std::swap(firstGlyph, lastGlyph); + + std::size_t textLength = m_text.GetLength(); + if (firstGlyph > textLength) + return; + + Nz::String newText; + if (firstGlyph > 0) + { + std::size_t characterPosition = m_text.GetCharacterPosition(firstGlyph - 1); + NazaraAssert(characterPosition != Nz::String::npos, "Invalid character position"); + + newText.Append(m_text.SubString(0, characterPosition)); + } + + if (lastGlyph < textLength) + { + std::size_t characterPosition = m_text.GetCharacterPosition(lastGlyph); + NazaraAssert(characterPosition != Nz::String::npos, "Invalid character position"); + + newText.Append(m_text.SubString(characterPosition)); + } + + SetText(newText); + } + void TextAreaWidget::EraseSelection() { if (!HasSelection()) return; - std::size_t cursorGlyphBegin = GetGlyphIndex(m_cursorPositionBegin); - std::size_t cursorGlyphEnd = GetGlyphIndex(m_cursorPositionEnd); - - std::size_t textLength = m_text.GetLength(); - if (cursorGlyphBegin > textLength) - return; - - Nz::String newText; - if (cursorGlyphBegin > 0) - newText.Append(m_text.SubString(0, m_text.GetCharacterPosition(cursorGlyphBegin) - 1)); - - if (cursorGlyphEnd < textLength) - newText.Append(m_text.SubString(m_text.GetCharacterPosition(cursorGlyphEnd))); - - SetText(newText); + Erase(GetGlyphIndex(m_cursorPositionBegin), GetGlyphIndex(m_cursorPositionEnd)); } Nz::Vector2ui TextAreaWidget::GetHoveredGlyph(float x, float y) const @@ -129,21 +145,19 @@ namespace Ndk SetContentSize(Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths())); } - void TextAreaWidget::Write(const Nz::String& text) + void TextAreaWidget::Write(const Nz::String& text, std::size_t glyphPosition) { - std::size_t cursorGlyph = GetGlyphIndex(m_cursorPositionBegin); - - if (cursorGlyph >= m_drawer.GetGlyphCount()) + if (glyphPosition >= m_drawer.GetGlyphCount()) { AppendText(text); SetCursorPosition(m_drawer.GetGlyphCount()); } else { - m_text.Insert(m_text.GetCharacterPosition(cursorGlyph), text); + m_text.Insert(m_text.GetCharacterPosition(glyphPosition), text); SetText(m_text); - SetCursorPosition(cursorGlyph + text.GetLength()); + SetCursorPosition(glyphPosition + text.GetLength()); } } @@ -181,23 +195,7 @@ namespace Ndk if (HasSelection()) EraseSelection(); else - { - std::size_t cursorGlyphBegin = GetGlyphIndex(m_cursorPositionBegin); - std::size_t cursorGlyphEnd = GetGlyphIndex(m_cursorPositionEnd); - - std::size_t textLength = m_text.GetLength(); - if (cursorGlyphBegin > textLength) - return true; - - Nz::String newText; - if (cursorGlyphBegin > 0) - newText.Append(m_text.SubString(0, m_text.GetCharacterPosition(cursorGlyphBegin) - 1)); - - if (cursorGlyphEnd < textLength) - newText.Append(m_text.SubString(m_text.GetCharacterPosition(cursorGlyphEnd + 1))); - - SetText(newText); - } + Erase(GetGlyphIndex(m_cursorPositionBegin)); return true; } @@ -338,6 +336,58 @@ namespace Ndk return true; } + case Nz::Keyboard::Tab: + { + if (!m_tabEnabled) + return false; + + if (HasSelection()) + { + for(unsigned line = m_cursorPositionBegin.y; line <= m_cursorPositionEnd.y; ++line) + { + const Nz::Vector2ui cursorPositionBegin = m_cursorPositionBegin; + const Nz::Vector2ui cursorPositionEnd = m_cursorPositionEnd; + + if (key.shift) + { + if (m_drawer.GetLineGlyphCount(line) == 0) + continue; + + std::size_t firstGlyph = GetGlyphIndex({ 0U, line }); + + if (m_text[m_text.GetCharacterPosition(firstGlyph)] == '\t') + { + Erase(firstGlyph); + SetSelection(cursorPositionBegin - (cursorPositionBegin.y == line && cursorPositionBegin.x != 0U ? Nz::Vector2ui { 1U, 0U } : Nz::Vector2ui {}), + cursorPositionEnd - (cursorPositionEnd.y == line && cursorPositionEnd.x != 0U ? Nz::Vector2ui { 1U, 0U } : Nz::Vector2ui {})); + } + } + else + { + Write(Nz::String('\t'), { 0U, line }); + SetSelection(cursorPositionBegin + (cursorPositionBegin.y == line && cursorPositionBegin.x != 0U ? Nz::Vector2ui { 1U, 0U } : Nz::Vector2ui {}), + cursorPositionEnd + (cursorPositionEnd.y == line ? Nz::Vector2ui { 1U, 0U } : Nz::Vector2ui {})); + } + } + } + else if (key.shift) + { + std::size_t currentGlyph = GetGlyphIndex(m_cursorPositionBegin); + + if (currentGlyph > 0 && m_text[m_text.GetCharacterPosition(currentGlyph - 1U)] == '\t') // Check if previous glyph is a tab + { + Erase(currentGlyph - 1U); + + if (m_cursorPositionBegin.x < static_cast(m_drawer.GetLineGlyphCount(m_cursorPositionBegin.y))) + MoveCursor(-1); + } + } + else + Write(Nz::String('\t')); + + return true; + } + default: return false; } @@ -438,6 +488,9 @@ namespace Ndk if (ignoreDefaultAction || !m_multiLineEnabled) break; + if (HasSelection()) + EraseSelection(); + Write(Nz::String('\n')); break; } From e4d547316dd6eba01ff0d35cbcd99f522a407099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 16 Aug 2018 18:06:02 +0200 Subject: [PATCH 109/194] Core/ObjectHandle: Fix Reset(ObjectHandle&&) not clearing the pointer --- ChangeLog.md | 1 + include/Nazara/Core/ObjectHandle.inl | 2 ++ 2 files changed, 3 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index da3410fb7..60735f783 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -134,6 +134,7 @@ Nazara Engine: - Added Unicode Data downloader/parser - Integrated Unicode Data - Added CullingList::FillWithAllEntries method +- Fixed ObjectHandle movement sometimes not resetting its internal pointer Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Core/ObjectHandle.inl b/include/Nazara/Core/ObjectHandle.inl index f415f93de..0ba6afc2c 100644 --- a/include/Nazara/Core/ObjectHandle.inl +++ b/include/Nazara/Core/ObjectHandle.inl @@ -140,6 +140,8 @@ namespace Nz handle.m_object = nullptr; object->UpdateHandle(&handle, this); } + else + m_object = nullptr; } /*! From ffc833439deb4cb970fc084b916635d318fbd947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 17 Aug 2018 17:03:49 +0200 Subject: [PATCH 110/194] Physics2D/Collider2D: Add some missing getters --- ChangeLog.md | 4 +++ include/Nazara/Physics2D/Collider2D.hpp | 22 +++++++++------- include/Nazara/Physics2D/Collider2D.inl | 35 ++++++++++++++++++++----- 3 files changed, 45 insertions(+), 16 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 60735f783..6acbd19aa 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -135,6 +135,10 @@ Nazara Engine: - Integrated Unicode Data - Added CullingList::FillWithAllEntries method - Fixed ObjectHandle movement sometimes not resetting its internal pointer +- Added BoxCollider2D::GetRadius +- Added CircleCollider2D::GetOffset +- Added ConvexCollider2D::GetVertices +- Added SegmentCollider2D::GetThickness() Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Physics2D/Collider2D.hpp b/include/Nazara/Physics2D/Collider2D.hpp index 78e76d6d6..0ef28c8f3 100644 --- a/include/Nazara/Physics2D/Collider2D.hpp +++ b/include/Nazara/Physics2D/Collider2D.hpp @@ -43,19 +43,19 @@ namespace Nz virtual float ComputeMomentOfInertia(float mass) const = 0; - inline Nz::UInt32 GetCategoryMask() const; - inline Nz::UInt32 GetCollisionGroup() const; + inline UInt32 GetCategoryMask() const; + inline UInt32 GetCollisionGroup() const; inline unsigned int GetCollisionId() const; - inline Nz::UInt32 GetCollisionMask() const; + inline UInt32 GetCollisionMask() const; virtual ColliderType2D GetType() const = 0; inline bool IsTrigger() const; - inline void SetCategoryMask(Nz::UInt32 categoryMask); - inline void SetCollisionGroup(Nz::UInt32 groupId); + inline void SetCategoryMask(UInt32 categoryMask); + inline void SetCollisionGroup(UInt32 groupId); inline void SetCollisionId(unsigned int typeId); - inline void SetCollisionMask(Nz::UInt32 mask); + inline void SetCollisionMask(UInt32 mask); inline void SetTrigger(bool trigger); Collider2D& operator=(const Collider2D&) = delete; @@ -68,10 +68,10 @@ namespace Nz virtual void CreateShapes(RigidBody2D* body, std::vector& shapes) const = 0; bool m_trigger; - Nz::UInt32 m_categoryMask; - Nz::UInt32 m_collisionGroup; + UInt32 m_categoryMask; + UInt32 m_collisionGroup; unsigned int m_collisionId; - Nz::UInt32 m_collisionMask; + UInt32 m_collisionMask; private: virtual std::vector GenerateShapes(RigidBody2D* body) const; @@ -92,6 +92,7 @@ namespace Nz float ComputeMomentOfInertia(float mass) const override; + inline float GetRadius() const; inline const Rectf& GetRect() const; inline Vector2f GetSize() const; ColliderType2D GetType() const override; @@ -117,6 +118,7 @@ namespace Nz float ComputeMomentOfInertia(float mass) const override; + inline const Vector2f& GetOffset() const; inline float GetRadius() const; ColliderType2D GetType() const override; @@ -165,6 +167,7 @@ namespace Nz float ComputeMomentOfInertia(float mass) const override; ColliderType2D GetType() const override; + inline const std::vector& GetVertices() const; template static ConvexCollider2DRef New(Args&&... args); @@ -210,6 +213,7 @@ namespace Nz inline const Vector2f& GetFirstPoint() const; inline float GetLength() const; inline const Vector2f& GetSecondPoint() const; + inline float GetThickness() const; ColliderType2D GetType() const override; template static SegmentCollider2DRef New(Args&&... args); diff --git a/include/Nazara/Physics2D/Collider2D.inl b/include/Nazara/Physics2D/Collider2D.inl index 79af0942d..1f149fb3f 100644 --- a/include/Nazara/Physics2D/Collider2D.inl +++ b/include/Nazara/Physics2D/Collider2D.inl @@ -2,6 +2,7 @@ // This file is part of the "Nazara Engine - Physics 2D module" // For conditions of distribution and use, see copyright notice in Config.hpp +#include #include #include @@ -16,12 +17,12 @@ namespace Nz { } - inline Nz::UInt32 Collider2D::GetCategoryMask() const + inline UInt32 Collider2D::GetCategoryMask() const { return m_categoryMask; } - inline Nz::UInt32 Collider2D::GetCollisionGroup() const + inline UInt32 Collider2D::GetCollisionGroup() const { return m_collisionGroup; } @@ -31,7 +32,7 @@ namespace Nz return m_collisionId; } - inline Nz::UInt32 Collider2D::GetCollisionMask() const + inline UInt32 Collider2D::GetCollisionMask() const { return m_collisionMask; } @@ -41,12 +42,12 @@ namespace Nz return m_trigger; } - inline void Collider2D::SetCategoryMask(Nz::UInt32 categoryMask) + inline void Collider2D::SetCategoryMask(UInt32 categoryMask) { m_categoryMask = categoryMask; } - inline void Collider2D::SetCollisionGroup(Nz::UInt32 groupId) + inline void Collider2D::SetCollisionGroup(UInt32 groupId) { m_collisionGroup = groupId; } @@ -56,7 +57,7 @@ namespace Nz m_collisionId = typeId; } - inline void Collider2D::SetCollisionMask(Nz::UInt32 mask) + inline void Collider2D::SetCollisionMask(UInt32 mask) { m_collisionMask = mask; } @@ -66,6 +67,11 @@ namespace Nz m_trigger = trigger; } + inline float BoxCollider2D::GetRadius() const + { + return m_radius; + } + inline const Rectf& BoxCollider2D::GetRect() const { return m_rect; @@ -85,6 +91,11 @@ namespace Nz return object.release(); } + inline const Vector2f& CircleCollider2D::GetOffset() const + { + return m_offset; + } + inline float CircleCollider2D::GetRadius() const { return m_radius; @@ -99,7 +110,7 @@ namespace Nz return object.release(); } - inline const std::vector& Nz::CompoundCollider2D::GetGeoms() const + inline const std::vector& CompoundCollider2D::GetGeoms() const { return m_geoms; } @@ -113,6 +124,11 @@ namespace Nz return object.release(); } + inline const std::vector& ConvexCollider2D::GetVertices() const + { + return m_vertices; + } + template ConvexCollider2DRef ConvexCollider2D::New(Args&&... args) { @@ -153,6 +169,11 @@ namespace Nz return m_second; } + inline float SegmentCollider2D::GetThickness() const + { + return m_thickness; + } + template SegmentCollider2DRef SegmentCollider2D::New(Args&&... args) { From 2db5273d362f37692d9772781ba961231cb8e10e Mon Sep 17 00:00:00 2001 From: Faymoon Date: Thu, 23 Aug 2018 17:29:02 +0200 Subject: [PATCH 111/194] Fix (#184) --- SDK/src/NDK/Systems/PhysicsSystem2D.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp index c717fcf80..0d17b27ec 100644 --- a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp +++ b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp @@ -246,7 +246,7 @@ namespace Ndk { worldCallbacks.postSolveCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { - callbacks.preSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + callbacks.postSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; } if (callbacks.startCallback) @@ -284,7 +284,7 @@ namespace Ndk { worldCallbacks.postSolveCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { - callbacks.preSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + callbacks.postSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; } if (callbacks.startCallback) From b9e36f36e29bafd38610a4c64a170a0c02900020 Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 23 Aug 2018 17:46:18 +0200 Subject: [PATCH 112/194] Graphics/TileMap: Fix sprite data corruption with multiple materials --- ChangeLog.md | 3 ++- src/Nazara/Graphics/TileMap.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 6acbd19aa..ca17d7e7a 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -138,7 +138,8 @@ Nazara Engine: - Added BoxCollider2D::GetRadius - Added CircleCollider2D::GetOffset - Added ConvexCollider2D::GetVertices -- Added SegmentCollider2D::GetThickness() +- Added SegmentCollider2D::GetThickness +- Fixed vertices generation/render queue submit when using multiples materials on a Tilemap Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Graphics/TileMap.cpp b/src/Nazara/Graphics/TileMap.cpp index 6a30496c3..eb1831bcf 100644 --- a/src/Nazara/Graphics/TileMap.cpp +++ b/src/Nazara/Graphics/TileMap.cpp @@ -31,7 +31,7 @@ namespace Nz std::size_t spriteCount = 0; for (const Layer& layer : m_layers) { - renderQueue->AddSprites(instanceData.renderOrder, GetMaterial(matCount++), &vertices[spriteCount], layer.tiles.size(), scissorRect); + renderQueue->AddSprites(instanceData.renderOrder, GetMaterial(matCount++), &vertices[4 * spriteCount], layer.tiles.size(), scissorRect); spriteCount += layer.tiles.size(); } @@ -63,9 +63,9 @@ namespace Nz spriteCount = 0; for (const Layer& layer : m_layers) { - SparsePtr colorPtr(&vertices[spriteCount].color, sizeof(VertexStruct_XYZ_Color_UV)); - SparsePtr posPtr(&vertices[spriteCount].position, sizeof(VertexStruct_XYZ_Color_UV)); - SparsePtr texCoordPtr(&vertices[spriteCount].uv, sizeof(VertexStruct_XYZ_Color_UV)); + SparsePtr colorPtr(&vertices[4 * spriteCount].color, sizeof(VertexStruct_XYZ_Color_UV)); + SparsePtr posPtr(&vertices[4 * spriteCount].position, sizeof(VertexStruct_XYZ_Color_UV)); + SparsePtr texCoordPtr(&vertices[4 * spriteCount].uv, sizeof(VertexStruct_XYZ_Color_UV)); for (std::size_t tileIndex : layer.tiles) { From 933cb644881d5473d8a325bae75d84f8950384a2 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 24 Aug 2018 16:30:03 +0200 Subject: [PATCH 113/194] Physics2D/Collider2D: Allow to prevent individual colliders properties override --- ChangeLog.md | 1 + include/Nazara/Physics2D/Collider2D.hpp | 6 ++++++ include/Nazara/Physics2D/Collider2D.inl | 10 ++++++++++ src/Nazara/Physics2D/Collider2D.cpp | 20 +++++++++++++++++--- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index ca17d7e7a..866118c41 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -140,6 +140,7 @@ Nazara Engine: - Added ConvexCollider2D::GetVertices - Added SegmentCollider2D::GetThickness - Fixed vertices generation/render queue submit when using multiples materials on a Tilemap +- It is now possible to prevent CompoundCollider2D to override individual colliders properties Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Physics2D/Collider2D.hpp b/include/Nazara/Physics2D/Collider2D.hpp index 0ef28c8f3..249110320 100644 --- a/include/Nazara/Physics2D/Collider2D.hpp +++ b/include/Nazara/Physics2D/Collider2D.hpp @@ -143,15 +143,21 @@ namespace Nz float ComputeMomentOfInertia(float mass) const override; + inline bool DoesOverrideCollisionProperties() const; + inline const std::vector& GetGeoms() const; ColliderType2D GetType() const override; + inline void OverridesCollisionProperties(bool shouldOverride); + template static CompoundCollider2DRef New(Args&&... args); private: void CreateShapes(RigidBody2D* body, std::vector& shapes) const override; + std::vector GenerateShapes(RigidBody2D* body) const override; std::vector m_geoms; + bool m_doesOverrideCollisionProperties; }; class ConvexCollider2D; diff --git a/include/Nazara/Physics2D/Collider2D.inl b/include/Nazara/Physics2D/Collider2D.inl index 1f149fb3f..71ae0603c 100644 --- a/include/Nazara/Physics2D/Collider2D.inl +++ b/include/Nazara/Physics2D/Collider2D.inl @@ -110,11 +110,21 @@ namespace Nz return object.release(); } + inline bool Nz::CompoundCollider2D::DoesOverrideCollisionProperties() const + { + return m_doesOverrideCollisionProperties; + } + inline const std::vector& CompoundCollider2D::GetGeoms() const { return m_geoms; } + inline void Nz::CompoundCollider2D::OverridesCollisionProperties(bool shouldOverride) + { + m_doesOverrideCollisionProperties = shouldOverride; + } + template CompoundCollider2DRef CompoundCollider2D::New(Args&&... args) { diff --git a/src/Nazara/Physics2D/Collider2D.cpp b/src/Nazara/Physics2D/Collider2D.cpp index 95cd633af..463ddf13b 100644 --- a/src/Nazara/Physics2D/Collider2D.cpp +++ b/src/Nazara/Physics2D/Collider2D.cpp @@ -13,11 +13,10 @@ namespace Nz std::vector Collider2D::GenerateShapes(RigidBody2D* body) const { - cpShapeFilter filter = cpShapeFilterNew(m_collisionGroup, m_categoryMask, m_collisionMask); - std::vector shapes; CreateShapes(body, shapes); + cpShapeFilter filter = cpShapeFilterNew(m_collisionGroup, m_categoryMask, m_collisionMask); for (cpShape* shape : shapes) { cpShapeSetFilter(shape, filter); @@ -82,7 +81,8 @@ namespace Nz /******************************** CompoundCollider2D *********************************/ CompoundCollider2D::CompoundCollider2D(std::vector geoms) : - m_geoms(std::move(geoms)) + m_geoms(std::move(geoms)), + m_doesOverrideCollisionProperties(true) { } @@ -109,6 +109,20 @@ namespace Nz geom->CreateShapes(body, shapes); } + std::vector CompoundCollider2D::GenerateShapes(RigidBody2D* body) const + { + // This is our parent's default behavior + if (m_doesOverrideCollisionProperties) + return Collider2D::GenerateShapes(body); + else + { + std::vector shapes; + CreateShapes(body, shapes); + + return shapes; + } + } + /******************************** ConvexCollider2D *********************************/ ConvexCollider2D::ConvexCollider2D(SparsePtr vertices, std::size_t vertexCount, float radius) : From a3a4ed89b852b494d050e7a611411bb403e003f9 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 25 Aug 2018 22:41:05 +0200 Subject: [PATCH 114/194] Graphics/Material: Fix reflection mode not being copied --- include/Nazara/Graphics/Material.inl | 3 ++- src/Nazara/Graphics/Material.cpp | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/Nazara/Graphics/Material.inl b/include/Nazara/Graphics/Material.inl index c6e56db84..bf96d6bc5 100644 --- a/include/Nazara/Graphics/Material.inl +++ b/include/Nazara/Graphics/Material.inl @@ -72,7 +72,8 @@ namespace Nz */ inline Material::Material(const Material& material) : RefCounted(), - Resource(material) + Resource(material), + m_reflectionMode(ReflectionMode_Skybox) { Copy(material); } diff --git a/src/Nazara/Graphics/Material.cpp b/src/Nazara/Graphics/Material.cpp index 37ab5afd7..81c50ab85 100644 --- a/src/Nazara/Graphics/Material.cpp +++ b/src/Nazara/Graphics/Material.cpp @@ -433,6 +433,8 @@ namespace Nz m_normalMap = material.m_normalMap; m_specularMap = material.m_specularMap; + SetReflectionMode(material.GetReflectionMode()); + InvalidatePipeline(); } From fd9db1b63910cd1cddfbb966a36bbd749bea8f1f Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 25 Aug 2018 22:41:34 +0200 Subject: [PATCH 115/194] Graphics/CullingList: Add forceInvalidation parameter --- SDK/src/NDK/Systems/RenderSystem.cpp | 2 +- include/Nazara/Graphics/CullingList.hpp | 2 +- include/Nazara/Graphics/CullingList.inl | 25 ++++++++++++++++++++++++- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index 57da4e78a..56c19abfa 100644 --- a/SDK/src/NDK/Systems/RenderSystem.cpp +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -208,7 +208,7 @@ namespace Ndk if (m_isCullingEnabled) visibilityHash = m_drawableCulling.Cull(camComponent.GetFrustum(), &forceInvalidation); else - visibilityHash = m_drawableCulling.FillWithAllEntries(); + visibilityHash = m_drawableCulling.FillWithAllEntries(&forceInvalidation); // Always regenerate renderqueue if particle groups are present for now (FIXME) if (!m_lights.empty() || !m_particleGroups.empty()) diff --git a/include/Nazara/Graphics/CullingList.hpp b/include/Nazara/Graphics/CullingList.hpp index df8be7d48..edc6e1621 100644 --- a/include/Nazara/Graphics/CullingList.hpp +++ b/include/Nazara/Graphics/CullingList.hpp @@ -41,7 +41,7 @@ namespace Nz std::size_t Cull(const Frustumf& frustum, bool* forceInvalidation = nullptr); - std::size_t FillWithAllEntries(); + std::size_t FillWithAllEntries(bool* forceInvalidation = nullptr); NoTestEntry RegisterNoTest(const T* renderable); SphereEntry RegisterSphereTest(const T* renderable); diff --git a/include/Nazara/Graphics/CullingList.inl b/include/Nazara/Graphics/CullingList.inl index 55aa8e35c..fb278d019 100644 --- a/include/Nazara/Graphics/CullingList.inl +++ b/include/Nazara/Graphics/CullingList.inl @@ -71,29 +71,52 @@ namespace Nz } template - std::size_t CullingList::FillWithAllEntries() + std::size_t CullingList::FillWithAllEntries(bool* forceInvalidation) { m_results.clear(); + bool forcedInvalidation = false; + std::size_t visibleHash = 0U; for (NoTestVisibilityEntry& entry : m_noTestList) { m_results.push_back(entry.renderable); Nz::HashCombine(visibleHash, entry.renderable); + + if (entry.forceInvalidation) + { + forcedInvalidation = true; + entry.forceInvalidation = false; + } } for (SphereVisibilityEntry& entry : m_sphereTestList) { m_results.push_back(entry.renderable); Nz::HashCombine(visibleHash, entry.renderable); + + if (entry.forceInvalidation) + { + forcedInvalidation = true; + entry.forceInvalidation = false; + } } for (VolumeVisibilityEntry& entry : m_volumeTestList) { m_results.push_back(entry.renderable); Nz::HashCombine(visibleHash, entry.renderable); + + if (entry.forceInvalidation) + { + forcedInvalidation = true; + entry.forceInvalidation = false; + } } + if (forceInvalidation) + *forceInvalidation = forcedInvalidation; + return visibleHash; } From cd0647008c96814f84363364085ec7b24b1cbb43 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 28 Aug 2018 21:56:32 +0200 Subject: [PATCH 116/194] SDK/PhysicsSystem2D: Fix temporary taken by reference --- SDK/src/NDK/Systems/PhysicsSystem2D.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp index 0d17b27ec..c4ea461f0 100644 --- a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp +++ b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp @@ -268,30 +268,33 @@ namespace Ndk if (callbacks.endCallback) { - worldCallbacks.endCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.endCallback = [this, cb = callbacks.endCallback](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { - callbacks.endCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; } + if (callbacks.preSolveCallback) { - worldCallbacks.preSolveCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.preSolveCallback = [this, cb = callbacks.preSolveCallback](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { - return callbacks.preSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + return cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; } + if (callbacks.postSolveCallback) { - worldCallbacks.postSolveCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.postSolveCallback = [this, cb = callbacks.postSolveCallback](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { - callbacks.postSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; } + if (callbacks.startCallback) { - worldCallbacks.startCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.startCallback = [this, cb = callbacks.startCallback](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { - return callbacks.startCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + return cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; } From 78faacf03fa6f704e24c36566dc6d291d05dd1f3 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 28 Aug 2018 22:05:15 +0200 Subject: [PATCH 117/194] PhysicsSystem2D: Fix RegisterCallbacks for good Allowing move instead of forcing copy Fixing RegisterCallbacks overload --- SDK/include/NDK/Systems/PhysicsSystem2D.hpp | 4 +-- SDK/src/NDK/Systems/PhysicsSystem2D.cpp | 31 +++++++++++---------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp index 1683fc7fb..09dd5c19d 100644 --- a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp +++ b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp @@ -57,8 +57,8 @@ namespace Ndk void RegionQuery(const Nz::Rectf& boundingBox, Nz::UInt32 collisionGroup, Nz::UInt32 categoryMask, Nz::UInt32 collisionMask, std::vector* bodies); - void RegisterCallbacks(unsigned int collisionId, const Callback& callbacks); - void RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, const Callback& callbacks); + void RegisterCallbacks(unsigned int collisionId, Callback callbacks); + void RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, Callback callbacks); inline void SetDamping(float dampingValue); inline void SetGravity(const Nz::Vector2f& gravity); diff --git a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp index c4ea461f0..a5bed6d28 100644 --- a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp +++ b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp @@ -224,36 +224,39 @@ namespace Ndk } } - void PhysicsSystem2D::RegisterCallbacks(unsigned int collisionId, const Callback& callbacks) + void PhysicsSystem2D::RegisterCallbacks(unsigned int collisionId, Callback callbacks) { Nz::PhysWorld2D::Callback worldCallbacks; if (callbacks.endCallback) { - worldCallbacks.endCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.endCallback = [this, cb = std::move(callbacks.endCallback)](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { - callbacks.endCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; } + if (callbacks.preSolveCallback) { - worldCallbacks.preSolveCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.preSolveCallback = [this, cb = std::move(callbacks.preSolveCallback)](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { - return callbacks.preSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + return cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; } + if (callbacks.postSolveCallback) { - worldCallbacks.postSolveCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.postSolveCallback = [this, cb = std::move(callbacks.postSolveCallback)](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { - callbacks.postSolveCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; } + if (callbacks.startCallback) { - worldCallbacks.startCallback = [&callbacks, this](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.startCallback = [this, cb = std::move(callbacks.startCallback)](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { - return callbacks.startCallback(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); + return cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; } @@ -262,13 +265,13 @@ namespace Ndk m_physWorld->RegisterCallbacks(collisionId, worldCallbacks); } - void PhysicsSystem2D::RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, const Callback& callbacks) + void PhysicsSystem2D::RegisterCallbacks(unsigned int collisionIdA, unsigned int collisionIdB, Callback callbacks) { Nz::PhysWorld2D::Callback worldCallbacks{}; if (callbacks.endCallback) { - worldCallbacks.endCallback = [this, cb = callbacks.endCallback](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.endCallback = [this, cb = std::move(callbacks.endCallback)](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; @@ -276,7 +279,7 @@ namespace Ndk if (callbacks.preSolveCallback) { - worldCallbacks.preSolveCallback = [this, cb = callbacks.preSolveCallback](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.preSolveCallback = [this, cb = std::move(callbacks.preSolveCallback)](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { return cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; @@ -284,7 +287,7 @@ namespace Ndk if (callbacks.postSolveCallback) { - worldCallbacks.postSolveCallback = [this, cb = callbacks.postSolveCallback](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.postSolveCallback = [this, cb = std::move(callbacks.postSolveCallback)](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; @@ -292,7 +295,7 @@ namespace Ndk if (callbacks.startCallback) { - worldCallbacks.startCallback = [this, cb = callbacks.startCallback](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) + worldCallbacks.startCallback = [this, cb = std::move(callbacks.startCallback)](Nz::PhysWorld2D& world, Nz::Arbiter2D& arbiter, Nz::RigidBody2D& bodyA, Nz::RigidBody2D& bodyB, void* userdata) { return cb(*this, arbiter, GetEntityFromBody(bodyA), GetEntityFromBody(bodyB), userdata); }; From 109e6a89cab50e55db6e8752c0a5da62abf74a76 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 28 Aug 2018 22:05:31 +0200 Subject: [PATCH 118/194] Sdk/PhysicsSystem2D: Removed copy constructor --- SDK/include/NDK/Systems/PhysicsSystem2D.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp index 09dd5c19d..0bbe8d907 100644 --- a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp +++ b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp @@ -38,7 +38,6 @@ namespace Ndk struct RaycastHit; PhysicsSystem2D(); - PhysicsSystem2D(const PhysicsSystem2D& system); ~PhysicsSystem2D() = default; void DebugDraw(const DebugDrawOptions& options, bool drawShapes = true, bool drawConstraints = true, bool drawCollisions = true); From 652ecd2404a363e82afb09951c4dbe2d370dcc0d Mon Sep 17 00:00:00 2001 From: S6066 Date: Tue, 28 Aug 2018 22:35:20 +0200 Subject: [PATCH 119/194] [Premake5: package] Fix typo in pack-libdir's description (#186) --- build/scripts/actions/package.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/scripts/actions/package.lua b/build/scripts/actions/package.lua index 3def5138c..f263f8faf 100644 --- a/build/scripts/actions/package.lua +++ b/build/scripts/actions/package.lua @@ -1,6 +1,6 @@ newoption({ trigger = "pack-libdir", - description = "Specifiy the subdirectory in lib/ to be used when packaging the project" + description = "Specifies the subdirectory in lib/ to be used when packaging the project" }) ACTION.Name = "Package" From e62afabd7100943ccd9da27b03583f094871e133 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 29 Aug 2018 20:54:57 +0200 Subject: [PATCH 120/194] Physics2D/Collider2D: Fix CompoundCollider2D filters --- include/Nazara/Physics2D/Collider2D.hpp | 18 ++++----- src/Nazara/Physics2D/Collider2D.cpp | 53 +++++++++++++++---------- src/Nazara/Physics2D/RigidBody2D.cpp | 2 +- 3 files changed, 42 insertions(+), 31 deletions(-) diff --git a/include/Nazara/Physics2D/Collider2D.hpp b/include/Nazara/Physics2D/Collider2D.hpp index 249110320..36443e66a 100644 --- a/include/Nazara/Physics2D/Collider2D.hpp +++ b/include/Nazara/Physics2D/Collider2D.hpp @@ -65,7 +65,7 @@ namespace Nz NazaraSignal(OnColliderRelease, const Collider2D* /*collider*/); protected: - virtual void CreateShapes(RigidBody2D* body, std::vector& shapes) const = 0; + virtual std::size_t CreateShapes(RigidBody2D* body, std::vector* shapes) const = 0; bool m_trigger; UInt32 m_categoryMask; @@ -74,7 +74,7 @@ namespace Nz UInt32 m_collisionMask; private: - virtual std::vector GenerateShapes(RigidBody2D* body) const; + virtual std::size_t GenerateShapes(RigidBody2D* body, std::vector* shapes) const; static Collider2DLibrary::LibraryMap s_library; }; @@ -100,7 +100,7 @@ namespace Nz template static BoxCollider2DRef New(Args&&... args); private: - void CreateShapes(RigidBody2D* body, std::vector& shapes) const override; + std::size_t CreateShapes(RigidBody2D* body, std::vector* shapes) const override; Rectf m_rect; float m_radius; @@ -125,7 +125,7 @@ namespace Nz template static CircleCollider2DRef New(Args&&... args); private: - void CreateShapes(RigidBody2D* body, std::vector& shapes) const override; + std::size_t CreateShapes(RigidBody2D* body, std::vector* shapes) const override; Vector2f m_offset; float m_radius; @@ -153,8 +153,8 @@ namespace Nz template static CompoundCollider2DRef New(Args&&... args); private: - void CreateShapes(RigidBody2D* body, std::vector& shapes) const override; - std::vector GenerateShapes(RigidBody2D* body) const override; + std::size_t CreateShapes(RigidBody2D* body, std::vector* shapes) const override; + std::size_t GenerateShapes(RigidBody2D* body, std::vector* shapes) const override; std::vector m_geoms; bool m_doesOverrideCollisionProperties; @@ -178,7 +178,7 @@ namespace Nz template static ConvexCollider2DRef New(Args&&... args); private: - void CreateShapes(RigidBody2D* body, std::vector& shapes) const override; + std::size_t CreateShapes(RigidBody2D* body, std::vector* shapes) const override; std::vector m_vertices; float m_radius; @@ -201,7 +201,7 @@ namespace Nz template static NullCollider2DRef New(Args&&... args); private: - void CreateShapes(RigidBody2D* body, std::vector& shapes) const override; + std::size_t CreateShapes(RigidBody2D* body, std::vector* shapes) const override; }; class SegmentCollider2D; @@ -225,7 +225,7 @@ namespace Nz template static SegmentCollider2DRef New(Args&&... args); private: - void CreateShapes(RigidBody2D* body, std::vector& shapes) const override; + std::size_t CreateShapes(RigidBody2D* body, std::vector* shapes) const override; Vector2f m_first; Vector2f m_second; diff --git a/src/Nazara/Physics2D/Collider2D.cpp b/src/Nazara/Physics2D/Collider2D.cpp index 463ddf13b..5f0e9bcfe 100644 --- a/src/Nazara/Physics2D/Collider2D.cpp +++ b/src/Nazara/Physics2D/Collider2D.cpp @@ -11,20 +11,21 @@ namespace Nz { Collider2D::~Collider2D() = default; - std::vector Collider2D::GenerateShapes(RigidBody2D* body) const + std::size_t Collider2D::GenerateShapes(RigidBody2D* body, std::vector* shapes) const { - std::vector shapes; - CreateShapes(body, shapes); + std::size_t shapeCount = CreateShapes(body, shapes); cpShapeFilter filter = cpShapeFilterNew(m_collisionGroup, m_categoryMask, m_collisionMask); - for (cpShape* shape : shapes) + for (std::size_t i = shapes->size() - shapeCount; i < shapes->size(); ++i) { + cpShape* shape = (*shapes)[i]; + cpShapeSetFilter(shape, filter); cpShapeSetCollisionType(shape, m_collisionId); cpShapeSetSensor(shape, (m_trigger) ? cpTrue : cpFalse); } - return shapes; + return shapeCount; } /******************************** BoxCollider2D *********************************/ @@ -50,9 +51,10 @@ namespace Nz return ColliderType2D_Box; } - void BoxCollider2D::CreateShapes(RigidBody2D* body, std::vector& shapes) const + std::size_t BoxCollider2D::CreateShapes(RigidBody2D* body, std::vector* shapes) const { - shapes.push_back(cpBoxShapeNew2(body->GetHandle(), cpBBNew(m_rect.x, m_rect.y, m_rect.x + m_rect.width, m_rect.y + m_rect.height), m_radius)); + shapes->push_back(cpBoxShapeNew2(body->GetHandle(), cpBBNew(m_rect.x, m_rect.y, m_rect.x + m_rect.width, m_rect.y + m_rect.height), m_radius)); + return 1; } /******************************** CircleCollider2D *********************************/ @@ -73,9 +75,10 @@ namespace Nz return ColliderType2D_Circle; } - void CircleCollider2D::CreateShapes(RigidBody2D* body, std::vector& shapes) const + std::size_t CircleCollider2D::CreateShapes(RigidBody2D* body, std::vector* shapes) const { - shapes.push_back(cpCircleShapeNew(body->GetHandle(), m_radius, cpv(m_offset.x, m_offset.y))); + shapes->push_back(cpCircleShapeNew(body->GetHandle(), m_radius, cpv(m_offset.x, m_offset.y))); + return 1; } /******************************** CompoundCollider2D *********************************/ @@ -102,24 +105,29 @@ namespace Nz return ColliderType2D_Compound; } - void CompoundCollider2D::CreateShapes(RigidBody2D* body, std::vector& shapes) const + std::size_t CompoundCollider2D::CreateShapes(RigidBody2D* body, std::vector* shapes) const { // Since C++ does not allow protected call from other objects, we have to be a friend of Collider2D, yay + + std::size_t shapeCount = 0; for (const auto& geom : m_geoms) - geom->CreateShapes(body, shapes); + shapeCount += geom->CreateShapes(body, shapes); + + return shapeCount; } - std::vector CompoundCollider2D::GenerateShapes(RigidBody2D* body) const + std::size_t CompoundCollider2D::GenerateShapes(RigidBody2D* body, std::vector* shapes) const { // This is our parent's default behavior if (m_doesOverrideCollisionProperties) - return Collider2D::GenerateShapes(body); + return Collider2D::GenerateShapes(body, shapes); else { - std::vector shapes; - CreateShapes(body, shapes); + std::size_t shapeCount = 0; + for (const auto& geom : m_geoms) + shapeCount += geom->GenerateShapes(body, shapes); - return shapes; + return shapeCount; } } @@ -145,9 +153,10 @@ namespace Nz return ColliderType2D_Convex; } - void ConvexCollider2D::CreateShapes(RigidBody2D* body, std::vector& shapes) const + std::size_t ConvexCollider2D::CreateShapes(RigidBody2D* body, std::vector* shapes) const { - shapes.push_back(cpPolyShapeNew(body->GetHandle(), int(m_vertices.size()), reinterpret_cast(m_vertices.data()), cpTransformIdentity, m_radius)); + shapes->push_back(cpPolyShapeNew(body->GetHandle(), int(m_vertices.size()), reinterpret_cast(m_vertices.data()), cpTransformIdentity, m_radius)); + return 1; } /********************************* NullCollider2D **********************************/ @@ -162,8 +171,9 @@ namespace Nz return (mass > 0.f) ? 1.f : 0.f; //< Null inertia is only possible for static/kinematic objects } - void NullCollider2D::CreateShapes(RigidBody2D* /*body*/, std::vector& /*shapes*/) const + std::size_t NullCollider2D::CreateShapes(RigidBody2D* /*body*/, std::vector* /*shapes*/) const { + return 0; } /******************************** SegmentCollider2D *********************************/ @@ -178,8 +188,9 @@ namespace Nz return ColliderType2D_Segment; } - void SegmentCollider2D::CreateShapes(RigidBody2D* body, std::vector& shapes) const + std::size_t SegmentCollider2D::CreateShapes(RigidBody2D* body, std::vector* shapes) const { - shapes.push_back(cpSegmentShapeNew(body->GetHandle(), cpv(m_first.x, m_first.y), cpv(m_second.x, m_second.y), m_thickness)); + shapes->push_back(cpSegmentShapeNew(body->GetHandle(), cpv(m_first.x, m_first.y), cpv(m_second.x, m_second.y), m_thickness)); + return 1; } } diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index 76844db3b..cb3f60ccf 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -311,7 +311,7 @@ namespace Nz else m_geom = NullCollider2D::New(); - m_shapes = m_geom->GenerateShapes(this); + m_geom->GenerateShapes(this, &m_shapes); cpSpace* space = m_world->GetHandle(); for (cpShape* shape : m_shapes) From b8e25502f56b31573d67b4d5bbe9dc92d76baf29 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 29 Aug 2018 20:55:19 +0200 Subject: [PATCH 121/194] Physics2D/RigidBody2D: Fix useless copy --- src/Nazara/Physics2D/RigidBody2D.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index cb3f60ccf..b12bc7e2e 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -30,7 +30,7 @@ namespace Nz NazaraAssert(m_world, "Invalid world"); m_handle = Create(mass); - SetGeom(geom); + SetGeom(std::move(geom)); } RigidBody2D::RigidBody2D(const RigidBody2D& object) : From 28c6bd7af73a6675859582193c7e04af692d50e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 30 Aug 2018 12:10:33 +0200 Subject: [PATCH 122/194] Network: Log internal errors --- src/Nazara/Network/Posix/SocketImpl.cpp | 11 +++++------ src/Nazara/Network/Win32/SocketImpl.cpp | 11 +++++------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/Nazara/Network/Posix/SocketImpl.cpp b/src/Nazara/Network/Posix/SocketImpl.cpp index 7f94f5a9d..f82e992ca 100644 --- a/src/Nazara/Network/Posix/SocketImpl.cpp +++ b/src/Nazara/Network/Posix/SocketImpl.cpp @@ -952,6 +952,11 @@ namespace Nz case EFAULT: case ENOTSOCK: case EPROTOTYPE: + // Those are not errors and should have been handled + case EALREADY: + case EISCONN: + case EWOULDBLOCK: + NazaraWarning("Internal error occurred: " + Error::GetLastSystemError(error) + " (" + String::Number(error) + ')'); return SocketError_Internal; case EADDRNOTAVAIL: @@ -965,12 +970,6 @@ namespace Nz case ESOCKTNOSUPPORT: return SocketError_NotSupported; - // Those are not errors and should have been handled before the call - case EALREADY: - case EISCONN: - case EWOULDBLOCK: - return SocketError_Internal; - case ECONNREFUSED: return SocketError_ConnectionRefused; diff --git a/src/Nazara/Network/Win32/SocketImpl.cpp b/src/Nazara/Network/Win32/SocketImpl.cpp index 097927dc6..f503fa4d8 100644 --- a/src/Nazara/Network/Win32/SocketImpl.cpp +++ b/src/Nazara/Network/Win32/SocketImpl.cpp @@ -951,6 +951,11 @@ namespace Nz case WSAENOTSOCK: case WSAEPROTOTYPE: case WSA_INVALID_HANDLE: + // Those are not errors and should have been handled + case WSAEALREADY: + case WSAEISCONN: + case WSAEWOULDBLOCK: + NazaraWarning("Internal error occurred: " + Error::GetLastSystemError(error) + " (" + String::Number(error) + ')'); return SocketError_Internal; case WSAEADDRNOTAVAIL: @@ -964,12 +969,6 @@ namespace Nz case WSAESOCKTNOSUPPORT: return SocketError_NotSupported; - // Those are not errors and should have been handled before the call - case WSAEALREADY: - case WSAEISCONN: - case WSAEWOULDBLOCK: - return SocketError_Internal; - case WSAECONNREFUSED: return SocketError_ConnectionRefused; From 56873b92b06fbdeb4ec656c5e6a9ba5625726dcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 30 Aug 2018 13:03:50 +0200 Subject: [PATCH 123/194] Network/Socket: Fix Connect (timeout) on Windows/Linux --- ChangeLog.md | 1 + src/Nazara/Network/Posix/SocketImpl.cpp | 2 +- src/Nazara/Network/Win32/SocketImpl.cpp | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index 866118c41..8f433fe57 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -141,6 +141,7 @@ Nazara Engine: - Added SegmentCollider2D::GetThickness - Fixed vertices generation/render queue submit when using multiples materials on a Tilemap - It is now possible to prevent CompoundCollider2D to override individual colliders properties +- Fixed TcpClient::WaitForConnected possible failure (although connected) on Windows/Linux Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Network/Posix/SocketImpl.cpp b/src/Nazara/Network/Posix/SocketImpl.cpp index f82e992ca..46afef418 100644 --- a/src/Nazara/Network/Posix/SocketImpl.cpp +++ b/src/Nazara/Network/Posix/SocketImpl.cpp @@ -153,7 +153,7 @@ namespace Nz tv.tv_usec = static_cast((msTimeout % 1000ULL) * 1000ULL); int ret = select(handle + 1, nullptr, &localSet, &localSet, (msTimeout > 0) ? &tv : nullptr); - if (ret == SOCKET_ERROR) + if (ret > 0) { int code = GetLastErrorCode(handle, error); if (code < 0) //< GetLastErrorCode() failed diff --git a/src/Nazara/Network/Win32/SocketImpl.cpp b/src/Nazara/Network/Win32/SocketImpl.cpp index f503fa4d8..e1191e07d 100644 --- a/src/Nazara/Network/Win32/SocketImpl.cpp +++ b/src/Nazara/Network/Win32/SocketImpl.cpp @@ -132,6 +132,7 @@ namespace Nz switch (errorCode) //< Check for "normal errors" first { case WSAEALREADY: + case WSAEINVAL: //< In case of connect, WSAEINVAL may be returned instead of WSAEALREADY case WSAEWOULDBLOCK: return SocketState_Connecting; From 7bb6c8475284fe0a8886d87c3fcdfedd880fe521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 31 Aug 2018 17:26:50 +0200 Subject: [PATCH 124/194] Graphics/CullingList: Improve culling list - Now supports box culling - Removed branch - Removed complex hash combination and replaced it with a much faster algorithm - It now supports partial visibility --- SDK/src/NDK/Systems/RenderSystem.cpp | 5 +- include/Nazara/Graphics/CullingList.hpp | 59 +++-- include/Nazara/Graphics/CullingList.inl | 308 +++++++++++++----------- include/Nazara/Graphics/Enums.hpp | 1 + 4 files changed, 205 insertions(+), 168 deletions(-) diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index 56c19abfa..e79c238b4 100644 --- a/SDK/src/NDK/Systems/RenderSystem.cpp +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -217,7 +217,10 @@ namespace Ndk if (camComponent.UpdateVisibility(visibilityHash) || m_forceRenderQueueInvalidation || forceInvalidation) { renderQueue->Clear(); - for (const GraphicsComponent* gfxComponent : m_drawableCulling) + for (const GraphicsComponent* gfxComponent : m_drawableCulling.GetFullyVisibleResults()) + gfxComponent->AddToRenderQueue(renderQueue); + + for (const GraphicsComponent* gfxComponent : m_drawableCulling.GetPartiallyVisibleResults()) gfxComponent->AddToRenderQueue(renderQueue); for (const Ndk::EntityHandle& light : m_lights) diff --git a/include/Nazara/Graphics/CullingList.hpp b/include/Nazara/Graphics/CullingList.hpp index edc6e1621..7feb32362 100644 --- a/include/Nazara/Graphics/CullingList.hpp +++ b/include/Nazara/Graphics/CullingList.hpp @@ -23,11 +23,13 @@ namespace Nz { public: template class Entry; + class BoxEntry; class NoTestEntry; class SphereEntry; class VolumeEntry; template friend class Entry; + friend BoxEntry; friend NoTestEntry; friend SphereEntry; friend VolumeEntry; @@ -43,6 +45,10 @@ namespace Nz std::size_t FillWithAllEntries(bool* forceInvalidation = nullptr); + const ResultContainer& GetFullyVisibleResults() const; + const ResultContainer& GetPartiallyVisibleResults() const; + + BoxEntry RegisterBoxTest(const T* renderable); NoTestEntry RegisterNoTest(const T* renderable); SphereEntry RegisterSphereTest(const T* renderable); VolumeEntry RegisterVolumeTest(const T* renderable); @@ -50,37 +56,24 @@ namespace Nz CullingList& operator=(const CullingList& renderable) = delete; CullingList& operator=(CullingList&& renderable) = delete; - // STL API - typename ResultContainer::iterator begin(); - typename ResultContainer::const_iterator begin() const; - - typename ResultContainer::const_iterator cbegin() const; - typename ResultContainer::const_iterator cend() const; - typename ResultContainer::const_reverse_iterator crbegin() const; - typename ResultContainer::const_reverse_iterator crend() const; - - bool empty() const; - - typename ResultContainer::iterator end(); - typename ResultContainer::const_iterator end() const; - - typename ResultContainer::reverse_iterator rbegin(); - typename ResultContainer::const_reverse_iterator rbegin() const; - - typename ResultContainer::reverse_iterator rend(); - typename ResultContainer::const_reverse_iterator rend() const; - - typename ResultContainer::size_type size() const; - NazaraSignal(OnCullingListRelease, CullingList* /*cullingList*/); private: + inline void NotifyBoxUpdate(std::size_t index, const Boxf& boundingVolume); inline void NotifyForceInvalidation(CullTest type, std::size_t index); inline void NotifyMovement(CullTest type, std::size_t index, void* oldPtr, void* newPtr); inline void NotifyRelease(CullTest type, std::size_t index); inline void NotifySphereUpdate(std::size_t index, const Spheref& sphere); inline void NotifyVolumeUpdate(std::size_t index, const BoundingVolumef& boundingVolume); + struct BoxVisibilityEntry + { + Boxf box; + BoxEntry* entry; + const T* renderable; + bool forceInvalidation; + }; + struct NoTestVisibilityEntry { NoTestEntry* entry; @@ -104,10 +97,12 @@ namespace Nz bool forceInvalidation; }; + std::vector m_boxTestList; std::vector m_noTestList; std::vector m_sphereTestList; std::vector m_volumeTestList; - ResultContainer m_results; + ResultContainer m_fullyVisibleResults; + ResultContainer m_partiallyVisibleResults; }; template @@ -135,6 +130,24 @@ namespace Nz std::size_t m_index; CullingList* m_parent; }; + + template + class CullingList::BoxEntry : public CullingList::template Entry + { + friend CullingList; + + public: + BoxEntry(); + BoxEntry(BoxEntry&&) = default; + ~BoxEntry() = default; + + void UpdateBox(const Boxf& box); + + BoxEntry& operator=(BoxEntry&&) = default; + + private: + BoxEntry(CullingList* parent, std::size_t index); + }; template class CullingList::NoTestEntry : public CullingList::template Entry diff --git a/include/Nazara/Graphics/CullingList.inl b/include/Nazara/Graphics/CullingList.inl index fb278d019..1230ce9e9 100644 --- a/include/Nazara/Graphics/CullingList.inl +++ b/include/Nazara/Graphics/CullingList.inl @@ -16,16 +16,48 @@ namespace Nz template std::size_t CullingList::Cull(const Frustumf& frustum, bool* forceInvalidation) { - m_results.clear(); + m_fullyVisibleResults.clear(); + m_partiallyVisibleResults.clear(); bool forcedInvalidation = false; - std::size_t visibleHash = 0U; + std::size_t fullyVisibleHash = 5U; + std::size_t partiallyVisibleHash = 5U; + + auto CombineHash = [](std::size_t currentHash, std::size_t newHash) + { + return currentHash * 23 + newHash; + }; + + for (BoxVisibilityEntry& entry : m_boxTestList) + { + switch (frustum.Intersect(entry.box)) + { + case IntersectionSide_Inside: + m_fullyVisibleResults.push_back(entry.renderable); + CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); + + forcedInvalidation = forcedInvalidation | entry.forceInvalidation; + entry.forceInvalidation = false; + break; + + case IntersectionSide_Intersecting: + m_partiallyVisibleResults.push_back(entry.renderable); + CombineHash(partiallyVisibleHash, std::hash()(entry.renderable)); + + forcedInvalidation = forcedInvalidation | entry.forceInvalidation; + entry.forceInvalidation = false; + break; + + case IntersectionSide_Outside: + break; + } + } for (NoTestVisibilityEntry& entry : m_noTestList) { - m_results.push_back(entry.renderable); - Nz::HashCombine(visibleHash, entry.renderable); + m_fullyVisibleResults.push_back(entry.renderable); + CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); if (entry.forceInvalidation) { @@ -36,34 +68,87 @@ namespace Nz for (SphereVisibilityEntry& entry : m_sphereTestList) { - if (frustum.Contains(entry.sphere)) + switch (frustum.Intersect(entry.sphere)) { - m_results.push_back(entry.renderable); - Nz::HashCombine(visibleHash, entry.renderable); + case IntersectionSide_Inside: + m_fullyVisibleResults.push_back(entry.renderable); + CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); - if (entry.forceInvalidation) - { - forcedInvalidation = true; + forcedInvalidation = forcedInvalidation | entry.forceInvalidation; entry.forceInvalidation = false; - } + break; + + case IntersectionSide_Intersecting: + m_partiallyVisibleResults.push_back(entry.renderable); + CombineHash(partiallyVisibleHash, std::hash()(entry.renderable)); + + forcedInvalidation = forcedInvalidation | entry.forceInvalidation; + entry.forceInvalidation = false; + break; + + case IntersectionSide_Outside: + break; } } - + for (VolumeVisibilityEntry& entry : m_volumeTestList) { - if (frustum.Contains(entry.volume)) + switch (frustum.Intersect(entry.volume)) { - m_results.push_back(entry.renderable); - Nz::HashCombine(visibleHash, entry.renderable); + case IntersectionSide_Inside: + m_fullyVisibleResults.push_back(entry.renderable); + CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); - if (entry.forceInvalidation) - { - forcedInvalidation = true; + forcedInvalidation = forcedInvalidation | entry.forceInvalidation; entry.forceInvalidation = false; - } + break; + + case IntersectionSide_Intersecting: + m_partiallyVisibleResults.push_back(entry.renderable); + CombineHash(partiallyVisibleHash, std::hash()(entry.renderable)); + + forcedInvalidation = forcedInvalidation | entry.forceInvalidation; + entry.forceInvalidation = false; + break; + + case IntersectionSide_Outside: + break; } } + if (forceInvalidation) + *forceInvalidation = forcedInvalidation; + + return 5 + partiallyVisibleHash * 17 + fullyVisibleHash; + } + + template + std::size_t CullingList::FillWithAllEntries(bool* forceInvalidation) + { + m_fullyVisibleResults.clear(); + m_partiallyVisibleResults.clear(); + + bool forcedInvalidation = false; + + std::size_t visibleHash = 5U; + + auto FillWithList = [&](auto& testList) + { + for (auto& entry : testList) + { + m_fullyVisibleResults.push_back(entry.renderable); + visibleHash = visibleHash * 23 + std::hash()(entry.renderable); + + forcedInvalidation = forcedInvalidation | entry.forceInvalidation; + entry.forceInvalidation = false; + } + }; + + FillWithList(m_boxTestList); + FillWithList(m_noTestList); + FillWithList(m_sphereTestList); + FillWithList(m_volumeTestList); + if (forceInvalidation) *forceInvalidation = forcedInvalidation; @@ -71,53 +156,24 @@ namespace Nz } template - std::size_t CullingList::FillWithAllEntries(bool* forceInvalidation) + auto CullingList::GetFullyVisibleResults() const -> const ResultContainer& { - m_results.clear(); + return m_fullyVisibleResults; + } - bool forcedInvalidation = false; + template + auto CullingList::GetPartiallyVisibleResults() const -> const ResultContainer& + { + return m_partiallyVisibleResults; + } - std::size_t visibleHash = 0U; - for (NoTestVisibilityEntry& entry : m_noTestList) - { - m_results.push_back(entry.renderable); - Nz::HashCombine(visibleHash, entry.renderable); + template + auto CullingList::RegisterBoxTest(const T* renderable) -> BoxEntry + { + BoxEntry newEntry(this, m_boxTestList.size()); + m_boxTestList.emplace_back(BoxVisibilityEntry{ Nz::Boxf(), &newEntry, renderable, false }); //< Address of entry will be updated when moving - if (entry.forceInvalidation) - { - forcedInvalidation = true; - entry.forceInvalidation = false; - } - } - - for (SphereVisibilityEntry& entry : m_sphereTestList) - { - m_results.push_back(entry.renderable); - Nz::HashCombine(visibleHash, entry.renderable); - - if (entry.forceInvalidation) - { - forcedInvalidation = true; - entry.forceInvalidation = false; - } - } - - for (VolumeVisibilityEntry& entry : m_volumeTestList) - { - m_results.push_back(entry.renderable); - Nz::HashCombine(visibleHash, entry.renderable); - - if (entry.forceInvalidation) - { - forcedInvalidation = true; - entry.forceInvalidation = false; - } - } - - if (forceInvalidation) - *forceInvalidation = forcedInvalidation; - - return visibleHash; + return newEntry; } template @@ -132,7 +188,7 @@ namespace Nz template auto CullingList::RegisterSphereTest(const T* renderable) -> SphereEntry { - SphereEntry newEntry(this, m_sphereTestList.size() - 1); + SphereEntry newEntry(this, m_sphereTestList.size()); m_sphereTestList.emplace_back(SphereVisibilityEntry{Nz::Spheref(), &newEntry, renderable, false}); //< Address of entry will be updated when moving return newEntry; @@ -147,89 +203,10 @@ namespace Nz return newEntry; } - // Interface STD template - typename CullingList::ResultContainer::iterator CullingList::begin() + inline void CullingList::NotifyBoxUpdate(std::size_t index, const Boxf& box) { - return m_results.begin(); - } - - template - typename CullingList::ResultContainer::const_iterator CullingList::begin() const - { - return m_results.begin(); - } - - template - typename CullingList::ResultContainer::const_iterator CullingList::cbegin() const - { - return m_results.cbegin(); - } - - template - typename CullingList::ResultContainer::const_iterator CullingList::cend() const - { - return m_results.cend(); - } - - template - typename CullingList::ResultContainer::const_reverse_iterator CullingList::crbegin() const - { - return m_results.crbegin(); - } - - template - typename CullingList::ResultContainer::const_reverse_iterator CullingList::crend() const - { - return m_results.crend(); - } - - template - bool CullingList::empty() const - { - return m_results.empty(); - } - - template - typename CullingList::ResultContainer::iterator CullingList::end() - { - return m_results.end(); - } - - template - typename CullingList::ResultContainer::const_iterator CullingList::end() const - { - return m_results.end(); - } - - template - typename CullingList::ResultContainer::reverse_iterator CullingList::rbegin() - { - return m_results.rbegin(); - } - - template - typename CullingList::ResultContainer::const_reverse_iterator CullingList::rbegin() const - { - return m_results.rbegin(); - } - - template - typename CullingList::ResultContainer::reverse_iterator CullingList::rend() - { - return m_results.rend(); - } - - template - typename CullingList::ResultContainer::const_reverse_iterator CullingList::rend() const - { - return m_results.rend(); - } - - template - typename CullingList::ResultContainer::size_type CullingList::size() const - { - return m_results.size(); + m_boxTestList[index].box = box; } template @@ -237,6 +214,12 @@ namespace Nz { switch (type) { + case CullTest::Box: + { + m_boxTestList[index].forceInvalidation = true; + break; + } + case CullTest::NoTest: { m_noTestList[index].forceInvalidation = true; @@ -268,6 +251,15 @@ namespace Nz switch (type) { + case CullTest::Box: + { + BoxVisibilityEntry& entry = m_boxTestList[index]; + NazaraAssert(entry.entry == oldPtr, "Invalid box entry"); + + entry.entry = static_cast(newPtr); + break; + } + case CullTest::NoTest: { NoTestVisibilityEntry& entry = m_noTestList[index]; @@ -306,6 +298,14 @@ namespace Nz { switch (type) { + case CullTest::Box: + { + m_boxTestList[index] = std::move(m_boxTestList.back()); + m_boxTestList[index].entry->UpdateIndex(index); + m_boxTestList.pop_back(); + break; + } + case CullTest::NoTest: { m_noTestList[index] = std::move(m_noTestList.back()); @@ -424,6 +424,26 @@ namespace Nz return *this; } + + ////////////////////////////////////////////////////////////////////////// + + template + CullingList::BoxEntry::BoxEntry() : + Entry() + { + } + + template + CullingList::BoxEntry::BoxEntry(CullingList* parent, std::size_t index) : + Entry(parent, index) + { + } + + template + void CullingList::BoxEntry::UpdateBox(const Boxf& box) + { + this->m_parent->NotifyBoxUpdate(this->m_index, box); + } ////////////////////////////////////////////////////////////////////////// diff --git a/include/Nazara/Graphics/Enums.hpp b/include/Nazara/Graphics/Enums.hpp index 83f46dc22..277d78a03 100644 --- a/include/Nazara/Graphics/Enums.hpp +++ b/include/Nazara/Graphics/Enums.hpp @@ -21,6 +21,7 @@ namespace Nz enum class CullTest { + Box, NoTest, Sphere, Volume From e42ff5b18a06c242e98099fd04963e78c8bad749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 31 Aug 2018 17:32:48 +0200 Subject: [PATCH 125/194] Sdk/GraphicsComponent: Remake bounding volume handling GraphicsComponent now only have an AABB but their instanced renderable now have individual BoundingVolume --- .../NDK/Components/GraphicsComponent.hpp | 37 ++++---- .../NDK/Components/GraphicsComponent.inl | 87 ++++++++++--------- SDK/src/NDK/Components/GraphicsComponent.cpp | 54 ++++++------ SDK/src/NDK/Systems/DebugSystem.cpp | 33 ++++--- SDK/src/NDK/Systems/RenderSystem.cpp | 5 +- SDK/src/NDK/Widgets/ButtonWidget.cpp | 2 +- 6 files changed, 118 insertions(+), 100 deletions(-) diff --git a/SDK/include/NDK/Components/GraphicsComponent.hpp b/SDK/include/NDK/Components/GraphicsComponent.hpp index 3e7b05def..d55ad0035 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.hpp +++ b/SDK/include/NDK/Components/GraphicsComponent.hpp @@ -44,15 +44,17 @@ namespace Ndk inline bool DoesRequireRealTimeReflections() const; + inline void EnsureBoundingVolumesUpdate() const; + inline void EnsureTransformMatrixUpdate() const; + template void ForEachRenderable(const Func& func) const; - inline void EnsureBoundingVolumeUpdate() const; - inline void EnsureTransformMatrixUpdate() const; + inline const Nz::Boxf& GetAABB() const; inline void GetAttachedRenderables(RenderableList* renderables) const; inline std::size_t GetAttachedRenderableCount() const; - inline const Nz::BoundingVolumef& GetBoundingVolume() const; + inline const Nz::BoundingVolumef& GetBoundingVolume(std::size_t renderableIndex) const; inline void RemoveFromCullingList(GraphicsComponentCullingList* cullingList) const; @@ -68,7 +70,7 @@ namespace Ndk void ConnectInstancedRenderableSignals(Renderable& renderable); - inline void InvalidateBoundingVolume() const; + inline void InvalidateAABB() const; void InvalidateRenderableData(const Nz::InstancedRenderable* renderable, Nz::UInt32 flags, std::size_t index); void InvalidateRenderableMaterial(const Nz::InstancedRenderable* renderable, std::size_t skinIndex, std::size_t matIndex, const Nz::MaterialRef& newMat); inline void InvalidateRenderables(); @@ -89,11 +91,20 @@ namespace Ndk void UnregisterMaterial(Nz::Material* material); - void UpdateBoundingVolume() const; + void UpdateBoundingVolumes() const; void UpdateTransformMatrix() const; NazaraSlot(Nz::Node, OnNodeInvalidation, m_nodeInvalidationSlot); + using CullingListBoxEntry = GraphicsComponentCullingList::BoxEntry; + + struct CullingBoxEntry + { + CullingListBoxEntry listEntry; + + NazaraSlot(GraphicsComponentCullingList, OnCullingListRelease, cullingListReleaseSlot); + }; + struct MaterialEntry { NazaraSlot(Nz::Material, OnMaterialReflectionModeChange, reflectionModelChangeSlot); @@ -128,29 +139,21 @@ namespace Ndk NazaraSlot(Nz::InstancedRenderable, OnInstancedRenderableResetMaterials, renderableResetMaterialsSlot); NazaraSlot(Nz::InstancedRenderable, OnInstancedRenderableSkinChange, renderableSkinChangeSlot); + mutable Nz::BoundingVolumef boundingVolume; mutable Nz::InstancedRenderable::InstanceData data; Nz::InstancedRenderableRef renderable; mutable bool dataUpdated; }; - using VolumeCullingListEntry = GraphicsComponentCullingList::VolumeEntry; - - struct VolumeCullingEntry - { - VolumeCullingListEntry listEntry; - - NazaraSlot(GraphicsComponentCullingList, OnCullingListRelease, cullingListReleaseSlot); - }; - std::size_t m_reflectiveMaterialCount; - mutable std::vector m_volumeCullingEntries; + mutable std::vector m_cullingBoxEntries; std::vector m_renderables; std::unordered_map m_materialEntries; - mutable Nz::BoundingVolumef m_boundingVolume; + mutable Nz::Boxf m_aabb; mutable Nz::Matrix4f m_transformMatrix; Nz::Recti m_scissorRect; Nz::TextureRef m_reflectionMap; - mutable bool m_boundingVolumeUpdated; + mutable bool m_boundingVolumesUpdated; mutable bool m_transformMatrixUpdated; unsigned int m_reflectionMapSize; }; diff --git a/SDK/include/NDK/Components/GraphicsComponent.inl b/SDK/include/NDK/Components/GraphicsComponent.inl index 08dc3c867..127be42f5 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -24,10 +24,10 @@ namespace Ndk Component(graphicsComponent), HandledObject(graphicsComponent), m_reflectiveMaterialCount(0), - m_boundingVolume(graphicsComponent.m_boundingVolume), + m_aabb(graphicsComponent.m_aabb), m_transformMatrix(graphicsComponent.m_transformMatrix), m_scissorRect(graphicsComponent.m_scissorRect), - m_boundingVolumeUpdated(graphicsComponent.m_boundingVolumeUpdated), + m_boundingVolumesUpdated(graphicsComponent.m_boundingVolumesUpdated), m_transformMatrixUpdated(graphicsComponent.m_transformMatrixUpdated) { m_renderables.reserve(graphicsComponent.m_renderables.size()); @@ -37,12 +37,12 @@ namespace Ndk inline void GraphicsComponent::AddToCullingList(GraphicsComponentCullingList* cullingList) const { - m_volumeCullingEntries.emplace_back(); - VolumeCullingEntry& entry = m_volumeCullingEntries.back(); + m_cullingBoxEntries.emplace_back(); + CullingBoxEntry& entry = m_cullingBoxEntries.back(); entry.cullingListReleaseSlot.Connect(cullingList->OnCullingListRelease, this, &GraphicsComponent::RemoveFromCullingList); - entry.listEntry = cullingList->RegisterVolumeTest(this); + entry.listEntry = cullingList->RegisterBoxTest(this); - InvalidateBoundingVolume(); + InvalidateAABB(); } /*! @@ -71,7 +71,7 @@ namespace Ndk InvalidateReflectionMap(); } - InvalidateBoundingVolume(); + InvalidateAABB(); } /*! @@ -86,7 +86,7 @@ namespace Ndk { if (it->renderable == renderable) { - InvalidateBoundingVolume(); + InvalidateAABB(); std::size_t materialCount = renderable->GetMaterialCount(); for (std::size_t i = 0; i < materialCount; ++i) @@ -110,26 +110,14 @@ namespace Ndk return m_reflectiveMaterialCount != 0 && m_reflectionMap; } - /*! - * \brief Calls a function for every renderable attached to this component - * - * \param func Callback function which will be called with renderable data - */ - template - void GraphicsComponent::ForEachRenderable(const Func& func) const - { - for (const auto& renderableData : m_renderables) - func(renderableData.renderable, renderableData.data.localMatrix, renderableData.data.renderOrder); - } - /*! * \brief Ensures the bounding volume is up to date */ - inline void GraphicsComponent::EnsureBoundingVolumeUpdate() const + inline void GraphicsComponent::EnsureBoundingVolumesUpdate() const { - if (!m_boundingVolumeUpdated) - UpdateBoundingVolume(); + if (!m_boundingVolumesUpdated) + UpdateBoundingVolumes(); } /*! @@ -142,6 +130,17 @@ namespace Ndk UpdateTransformMatrix(); } + /*! + * \brief Gets the axis-aligned bounding box of the entity + * \return A constant reference to the AABB + */ + inline const Nz::Boxf& GraphicsComponent::GetAABB() const + { + EnsureBoundingVolumesUpdate(); + + return m_aabb; + } + /*! * \brief Gets the set of renderable elements * @@ -169,28 +168,36 @@ namespace Ndk return m_renderables.size(); } - /*! - * \brief Gets the bouding volume of the entity - * \return A constant reference to the bounding volume - */ - - inline const Nz::BoundingVolumef& GraphicsComponent::GetBoundingVolume() const + inline const Nz::BoundingVolumef& GraphicsComponent::GetBoundingVolume(std::size_t renderableIndex) const { - EnsureBoundingVolumeUpdate(); + EnsureBoundingVolumesUpdate(); - return m_boundingVolume; + assert(renderableIndex < m_renderables.size()); + return m_renderables[renderableIndex].boundingVolume; + } + + /*! + * \brief Calls a function for every renderable attached to this component + * + * \param func Callback function which will be called with renderable data + */ + template + void GraphicsComponent::ForEachRenderable(const Func& func) const + { + for (const auto& renderableData : m_renderables) + func(renderableData.renderable, renderableData.data.localMatrix, renderableData.data.renderOrder); } inline void GraphicsComponent::RemoveFromCullingList(GraphicsComponentCullingList* cullingList) const { - for (auto it = m_volumeCullingEntries.begin(); it != m_volumeCullingEntries.end(); ++it) + for (auto it = m_cullingBoxEntries.begin(); it != m_cullingBoxEntries.end(); ++it) { if (it->listEntry.GetParent() == cullingList) { - if (m_volumeCullingEntries.size() > 1) - *it = std::move(m_volumeCullingEntries.back()); + if (m_cullingBoxEntries.size() > 1) + *it = std::move(m_cullingBoxEntries.back()); - m_volumeCullingEntries.pop_back(); + m_cullingBoxEntries.pop_back(); break; } } @@ -200,7 +207,7 @@ namespace Ndk { m_scissorRect = scissorRect; - for (VolumeCullingEntry& entry : m_volumeCullingEntries) + for (CullingBoxEntry& entry : m_cullingBoxEntries) entry.listEntry.ForceInvalidation(); //< Invalidate render queues } @@ -212,7 +219,7 @@ namespace Ndk { renderable.data.localMatrix = localMatrix; - InvalidateBoundingVolume(); + InvalidateAABB(); break; } } @@ -234,9 +241,9 @@ namespace Ndk * \brief Invalidates the bounding volume */ - inline void GraphicsComponent::InvalidateBoundingVolume() const + inline void GraphicsComponent::InvalidateAABB() const { - m_boundingVolumeUpdated = false; + m_boundingVolumesUpdated = false; } /*! @@ -257,7 +264,7 @@ namespace Ndk { m_transformMatrixUpdated = false; - InvalidateBoundingVolume(); + InvalidateAABB(); InvalidateRenderables(); } } diff --git a/SDK/src/NDK/Components/GraphicsComponent.cpp b/SDK/src/NDK/Components/GraphicsComponent.cpp index f865e749b..41c25fb90 100644 --- a/SDK/src/NDK/Components/GraphicsComponent.cpp +++ b/SDK/src/NDK/Components/GraphicsComponent.cpp @@ -60,12 +60,12 @@ namespace Ndk for (std::size_t i = 0; i < materialCount; ++i) RegisterMaterial(entry.renderable->GetMaterial(i)); - InvalidateBoundingVolume(); + InvalidateAABB(); } void GraphicsComponent::ConnectInstancedRenderableSignals(Renderable& entry) { - entry.renderableBoundingVolumeInvalidationSlot.Connect(entry.renderable->OnInstancedRenderableInvalidateBoundingVolume, [this](const Nz::InstancedRenderable*) { InvalidateBoundingVolume(); }); + entry.renderableBoundingVolumeInvalidationSlot.Connect(entry.renderable->OnInstancedRenderableInvalidateBoundingVolume, [this](const Nz::InstancedRenderable*) { InvalidateAABB(); }); entry.renderableDataInvalidationSlot.Connect(entry.renderable->OnInstancedRenderableInvalidateData, std::bind(&GraphicsComponent::InvalidateRenderableData, this, std::placeholders::_1, std::placeholders::_2, m_renderables.size() - 1)); entry.renderableMaterialInvalidationSlot.Connect(entry.renderable->OnInstancedRenderableInvalidateMaterial, this, &GraphicsComponent::InvalidateRenderableMaterial); entry.renderableReleaseSlot.Connect(entry.renderable->OnInstancedRenderableRelease, this, &GraphicsComponent::Detach); @@ -82,7 +82,7 @@ namespace Ndk r.dataUpdated = false; r.renderable->InvalidateData(&r.data, flags); - for (VolumeCullingEntry& entry : m_volumeCullingEntries) + for (CullingBoxEntry& entry : m_cullingBoxEntries) entry.listEntry.ForceInvalidation(); } @@ -234,10 +234,10 @@ namespace Ndk NazaraUnused(node); // Our view matrix depends on NodeComponent position/rotation - InvalidateBoundingVolume(); + InvalidateAABB(); InvalidateTransformMatrix(); - for (VolumeCullingEntry& entry : m_volumeCullingEntries) + for (CullingBoxEntry& entry : m_cullingBoxEntries) entry.listEntry.ForceInvalidation(); //< Force invalidation on movement } @@ -263,36 +263,32 @@ namespace Ndk * \brief Updates the bounding volume */ - void GraphicsComponent::UpdateBoundingVolume() const + void GraphicsComponent::UpdateBoundingVolumes() const { EnsureTransformMatrixUpdate(); - m_boundingVolume.MakeNull(); - for (const Renderable& r : m_renderables) - { - Nz::BoundingVolumef boundingVolume = r.renderable->GetBoundingVolume(); - - // Adjust renderable bounding volume by local matrix - if (boundingVolume.IsFinite()) - { - Nz::Boxf localBox = boundingVolume.obb.localBox; - Nz::Vector3f newPos = r.data.localMatrix * localBox.GetPosition(); - Nz::Vector3f newCorner = r.data.localMatrix * (localBox.GetPosition() + localBox.GetLengths()); - Nz::Vector3f newLengths = newCorner - newPos; - - boundingVolume.Set(Nz::Boxf(newPos.x, newPos.y, newPos.z, newLengths.x, newLengths.y, newLengths.z)); - } - - m_boundingVolume.ExtendTo(boundingVolume); - } - RenderSystem& renderSystem = m_entity->GetWorld()->GetSystem(); - m_boundingVolume.Update(Nz::Matrix4f::ConcatenateAffine(renderSystem.GetCoordinateSystemMatrix(), m_transformMatrix)); - m_boundingVolumeUpdated = true; + m_aabb.MakeZero(); + for (std::size_t i = 0; i < m_renderables.size(); ++i) + { + const Renderable& r = m_renderables[i]; + r.boundingVolume = r.renderable->GetBoundingVolume(); + if (r.boundingVolume.IsFinite()) + { + r.boundingVolume.Update(Nz::Matrix4f::ConcatenateAffine(renderSystem.GetCoordinateSystemMatrix(), Nz::Matrix4f::ConcatenateAffine(r.data.localMatrix, m_transformMatrix))); - for (VolumeCullingEntry& entry : m_volumeCullingEntries) - entry.listEntry.UpdateVolume(m_boundingVolume); + if (i > 0) + m_aabb.ExtendTo(r.boundingVolume.aabb); + else + m_aabb.Set(r.boundingVolume.aabb); + } + } + + m_boundingVolumesUpdated = true; + + for (CullingBoxEntry& entry : m_cullingBoxEntries) + entry.listEntry.UpdateBox(m_aabb); } /*! diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 0da17c352..407267fcd 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -62,13 +62,22 @@ namespace Ndk const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); - Nz::Boxf aabb = entityGfx.GetBoundingVolume().aabb; + auto DrawBox = [&](const Nz::Boxf& box) + { + Nz::Matrix4f transformMatrix = Nz::Matrix4f::Identity(); + transformMatrix.SetScale(box.GetLengths()); + transformMatrix.SetTranslation(box.GetCenter()); - Nz::Matrix4f transformMatrix = Nz::Matrix4f::Identity(); - transformMatrix.SetScale(aabb.GetLengths()); - transformMatrix.SetTranslation(aabb.GetCenter()); + renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); + }; - renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); + //DrawBox(entityGfx.GetAABB()); + for (std::size_t i = 0; i < entityGfx.GetAttachedRenderableCount(); ++i) + { + const Nz::BoundingVolumef& boundingVolume = entityGfx.GetBoundingVolume(i); + if (boundingVolume.IsFinite()) + DrawBox(boundingVolume.aabb); + } } std::unique_ptr Clone() const override @@ -86,10 +95,11 @@ namespace Ndk { NazaraAssert(m_entityOwner, "DebugRenderable has no owner"); - const DebugComponent& entityDebug = m_entityOwner->GetComponent(); + // TODO + /*const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); - Nz::Boxf obb = entityGfx.GetBoundingVolume().obb.localBox; + Nz::Boxf obb = entityGfx.GetAABB().obb.localBox; Nz::Matrix4f transformMatrix = instanceData.transformMatrix; Nz::Vector3f obbCenter = transformMatrix.Transform(obb.GetCenter(), 0.f); //< Apply rotation/scale to obb center, to display it at a correct position @@ -97,7 +107,7 @@ namespace Ndk transformMatrix.ApplyScale(obb.GetLengths()); transformMatrix.ApplyTranslation(obbCenter); - renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); + renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect);*/ } std::unique_ptr Clone() const override @@ -120,7 +130,7 @@ namespace Ndk */ DebugSystem::DebugSystem() { - Requires(); + Requires(); SetUpdateOrder(1000); //< Update last } @@ -181,6 +191,7 @@ namespace Ndk DebugComponent& entityDebug = entity->GetComponent(); GraphicsComponent& entityGfx = entity->GetComponent(); + NodeComponent& entityNode = entity->GetComponent(); DebugDrawFlags enabledFlags = entityDebug.GetEnabledFlags(); DebugDrawFlags flags = entityDebug.GetFlags(); @@ -195,14 +206,14 @@ namespace Ndk { case DebugDraw::Collider3D: { - const Nz::Boxf& obb = entityGfx.GetBoundingVolume().obb.localBox; + const Nz::Boxf& obb = entityGfx.GetAABB(); Nz::InstancedRenderableRef renderable = GenerateCollision3DMesh(entity); if (renderable) { renderable->SetPersistent(false); - entityGfx.Attach(renderable, Nz::Matrix4f::Translate(obb.GetCenter()), DebugDrawOrder); + entityGfx.Attach(renderable, Nz::Matrix4f::Translate(obb.GetCenter() - entityNode.GetPosition()), DebugDrawOrder); } entityDebug.UpdateDebugRenderable(option, std::move(renderable)); diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index e79c238b4..f01294865 100644 --- a/SDK/src/NDK/Systems/RenderSystem.cpp +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -195,11 +195,11 @@ namespace Ndk Nz::AbstractRenderQueue* renderQueue = m_renderTechnique->GetRenderQueue(); - // To make sure the bounding volume used by the culling list is updated + // To make sure the bounding volumes used by the culling list is updated for (const Ndk::EntityHandle& drawable : m_drawables) { GraphicsComponent& graphicsComponent = drawable->GetComponent(); - graphicsComponent.EnsureBoundingVolumeUpdate(); + graphicsComponent.EnsureBoundingVolumesUpdate(); } bool forceInvalidation = false; @@ -220,6 +220,7 @@ namespace Ndk for (const GraphicsComponent* gfxComponent : m_drawableCulling.GetFullyVisibleResults()) gfxComponent->AddToRenderQueue(renderQueue); + // FIXME: We should cull individual renderables here for (const GraphicsComponent* gfxComponent : m_drawableCulling.GetPartiallyVisibleResults()) gfxComponent->AddToRenderQueue(renderQueue); diff --git a/SDK/src/NDK/Widgets/ButtonWidget.cpp b/SDK/src/NDK/Widgets/ButtonWidget.cpp index 5d8360635..f432d86b7 100644 --- a/SDK/src/NDK/Widgets/ButtonWidget.cpp +++ b/SDK/src/NDK/Widgets/ButtonWidget.cpp @@ -87,7 +87,7 @@ namespace Ndk Nz::Vector2f origin = GetContentOrigin(); const Nz::Vector2f& contentSize = GetContentSize(); - Nz::Boxf textBox = m_textEntity->GetComponent().GetBoundingVolume().obb.localBox; + Nz::Boxf textBox = m_textEntity->GetComponent().GetAABB(); m_textEntity->GetComponent().SetPosition(origin.x + contentSize.x / 2 - textBox.width / 2, origin.y + contentSize.y / 2 - textBox.height / 2); } From 5e6204fad441bb6e7caabdb5a5c57ad1ec0a270a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 31 Aug 2018 17:33:51 +0200 Subject: [PATCH 126/194] Fix compilation --- examples/Particles/main.cpp | 4 ++-- tests/SDK/NDK/Systems/RenderSystem.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/Particles/main.cpp b/examples/Particles/main.cpp index 084c33da8..e4940c63d 100644 --- a/examples/Particles/main.cpp +++ b/examples/Particles/main.cpp @@ -97,8 +97,8 @@ int main() particleCountGfx.Attach(shared.particleCount, 1); - Nz::Boxf fpsCountBox = fpsGfx.GetBoundingVolume().aabb; - Nz::Boxf particleCountBox = particleCountGfx.GetBoundingVolume().aabb; + Nz::Boxf fpsCountBox = fpsGfx.GetAABB(); + Nz::Boxf particleCountBox = particleCountGfx.GetAABB(); Nz::Vector2ui windowSize = window.GetSize(); demoNameNode.SetPosition(5.f, 5.f); diff --git a/tests/SDK/NDK/Systems/RenderSystem.cpp b/tests/SDK/NDK/Systems/RenderSystem.cpp index ec22d6e57..a94109b9d 100644 --- a/tests/SDK/NDK/Systems/RenderSystem.cpp +++ b/tests/SDK/NDK/Systems/RenderSystem.cpp @@ -76,7 +76,7 @@ SCENARIO("RenderSystem", "[NDK][RenderSystem]") { CHECK(nodeComponent.GetPosition() == position + velocity); CHECK(physicsComponent2D.GetAABB() == aabb.Translate(position + velocity)); - CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetBoundingVolume()); + CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetAABB()); } } @@ -91,17 +91,17 @@ SCENARIO("RenderSystem", "[NDK][RenderSystem]") CHECK(physicsComponent2D.GetAngularVelocity() == Approx(angularSpeed)); CHECK(physicsComponent2D.GetRotation() == Approx(angularSpeed)); CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(1.f, 4.f, 2.f, 1.f)); - CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetBoundingVolume()); + CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetAABB()); world.Update(1.f); CHECK(physicsComponent2D.GetRotation() == Approx(2.f * angularSpeed)); CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(2.f, 2.f, 1.f, 2.f)); - CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetBoundingVolume()); + CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetAABB()); world.Update(1.f); CHECK(physicsComponent2D.GetRotation() == Approx(3.f * angularSpeed)); CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(3.f, 3.f, 2.f, 1.f)); - CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetBoundingVolume()); + CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetAABB()); world.Update(1.f); CHECK(physicsComponent2D.GetRotation() == Approx(4.f * angularSpeed)); @@ -117,4 +117,4 @@ void CompareAABB(const Nz::Rectf& aabb, const Nz::BoundingVolumef& boundingVolum CHECK(aabb.y == Approx(box.y)); CHECK(aabb.width == Approx(box.width)); CHECK(aabb.height == Approx(box.height)); -} \ No newline at end of file +} From b739965b1dfdb0f9b365b8376009122ce193ac05 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 31 Aug 2018 21:45:35 +0200 Subject: [PATCH 127/194] Graphics/RenderSystem: Add supports for partial culling --- .../NDK/Components/GraphicsComponent.hpp | 2 ++ SDK/src/NDK/Components/GraphicsComponent.cpp | 33 +++++++++++++++++-- SDK/src/NDK/Systems/RenderSystem.cpp | 7 ++-- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/SDK/include/NDK/Components/GraphicsComponent.hpp b/SDK/include/NDK/Components/GraphicsComponent.hpp index d55ad0035..177dbbb1f 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.hpp +++ b/SDK/include/NDK/Components/GraphicsComponent.hpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -34,6 +35,7 @@ namespace Ndk inline void AddToCullingList(GraphicsComponentCullingList* cullingList) const; void AddToRenderQueue(Nz::AbstractRenderQueue* renderQueue) const; + void AddToRenderQueueByCulling(const Nz::Frustumf& frustum, Nz::AbstractRenderQueue* renderQueue) const; inline void Attach(Nz::InstancedRenderableRef renderable, int renderOrder = 0); void Attach(Nz::InstancedRenderableRef renderable, const Nz::Matrix4f& localMatrix, int renderOrder = 0); diff --git a/SDK/src/NDK/Components/GraphicsComponent.cpp b/SDK/src/NDK/Components/GraphicsComponent.cpp index 41c25fb90..6b2b2880a 100644 --- a/SDK/src/NDK/Components/GraphicsComponent.cpp +++ b/SDK/src/NDK/Components/GraphicsComponent.cpp @@ -22,6 +22,7 @@ namespace Ndk */ void GraphicsComponent::AddToRenderQueue(Nz::AbstractRenderQueue* renderQueue) const { + EnsureBoundingVolumesUpdate(); EnsureTransformMatrixUpdate(); RenderSystem& renderSystem = m_entity->GetWorld()->GetSystem(); @@ -30,7 +31,6 @@ namespace Ndk { if (!object.dataUpdated) { - object.data.transformMatrix = Nz::Matrix4f::ConcatenateAffine(renderSystem.GetCoordinateSystemMatrix(), Nz::Matrix4f::ConcatenateAffine(object.data.localMatrix, m_transformMatrix)); object.renderable->UpdateData(&object.data); object.dataUpdated = true; } @@ -39,6 +39,34 @@ namespace Ndk } } + /*! + * \brief Adds the renderable elements to the render queue if their bounding volume intersects with the frustum + * + * \param frustum Queue to be added + * \param renderQueue Queue to be added + */ + void GraphicsComponent::AddToRenderQueueByCulling(const Nz::Frustumf& frustum, Nz::AbstractRenderQueue* renderQueue) const + { + EnsureBoundingVolumesUpdate(); + EnsureTransformMatrixUpdate(); + + RenderSystem& renderSystem = m_entity->GetWorld()->GetSystem(); + + for (const Renderable& object : m_renderables) + { + if (frustum.Contains(object.boundingVolume)) + { + if (!object.dataUpdated) + { + object.renderable->UpdateData(&object.data); + object.dataUpdated = true; + } + + object.renderable->AddToRenderQueue(renderQueue, object.data, m_scissorRect); + } + } + } + /*! * \brief Attaches a renderable to the entity with a specific matrix * @@ -274,9 +302,10 @@ namespace Ndk { const Renderable& r = m_renderables[i]; r.boundingVolume = r.renderable->GetBoundingVolume(); + r.data.transformMatrix = Nz::Matrix4f::ConcatenateAffine(renderSystem.GetCoordinateSystemMatrix(), Nz::Matrix4f::ConcatenateAffine(r.data.localMatrix, m_transformMatrix)); if (r.boundingVolume.IsFinite()) { - r.boundingVolume.Update(Nz::Matrix4f::ConcatenateAffine(renderSystem.GetCoordinateSystemMatrix(), Nz::Matrix4f::ConcatenateAffine(r.data.localMatrix, m_transformMatrix))); + r.boundingVolume.Update(r.data.transformMatrix); if (i > 0) m_aabb.ExtendTo(r.boundingVolume.aabb); diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index f01294865..25b8e3585 100644 --- a/SDK/src/NDK/Systems/RenderSystem.cpp +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -204,9 +204,11 @@ namespace Ndk bool forceInvalidation = false; + const Nz::Frustumf& frustum = camComponent.GetFrustum(); + std::size_t visibilityHash; if (m_isCullingEnabled) - visibilityHash = m_drawableCulling.Cull(camComponent.GetFrustum(), &forceInvalidation); + visibilityHash = m_drawableCulling.Cull(frustum, &forceInvalidation); else visibilityHash = m_drawableCulling.FillWithAllEntries(&forceInvalidation); @@ -220,9 +222,8 @@ namespace Ndk for (const GraphicsComponent* gfxComponent : m_drawableCulling.GetFullyVisibleResults()) gfxComponent->AddToRenderQueue(renderQueue); - // FIXME: We should cull individual renderables here for (const GraphicsComponent* gfxComponent : m_drawableCulling.GetPartiallyVisibleResults()) - gfxComponent->AddToRenderQueue(renderQueue); + gfxComponent->AddToRenderQueueByCulling(frustum, renderQueue); for (const Ndk::EntityHandle& light : m_lights) { From 8ce8eafb88c956d9c7a7d40138149d76a95dff6d Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 31 Aug 2018 21:45:57 +0200 Subject: [PATCH 128/194] Sdk/DebugSystem: Fix AABB/OBB debug draw --- .../NDK/Components/GraphicsComponent.hpp | 2 ++ .../NDK/Components/GraphicsComponent.inl | 14 +++++++++ SDK/src/NDK/Systems/DebugSystem.cpp | 30 ++++++++++++------- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/SDK/include/NDK/Components/GraphicsComponent.hpp b/SDK/include/NDK/Components/GraphicsComponent.hpp index 177dbbb1f..cd2900d7f 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.hpp +++ b/SDK/include/NDK/Components/GraphicsComponent.hpp @@ -57,6 +57,8 @@ namespace Ndk inline std::size_t GetAttachedRenderableCount() const; inline const Nz::BoundingVolumef& GetBoundingVolume(std::size_t renderableIndex) const; + inline const Nz::Matrix4f& GetLocalMatrix(std::size_t renderableIndex) const; + inline const Nz::Matrix4f& GetTransformMatrix(std::size_t renderableIndex) const; inline void RemoveFromCullingList(GraphicsComponentCullingList* cullingList) const; diff --git a/SDK/include/NDK/Components/GraphicsComponent.inl b/SDK/include/NDK/Components/GraphicsComponent.inl index 127be42f5..71adf64d4 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -176,6 +176,20 @@ namespace Ndk return m_renderables[renderableIndex].boundingVolume; } + inline const Nz::Matrix4f& GraphicsComponent::GetLocalMatrix(std::size_t renderableIndex) const + { + assert(renderableIndex < m_renderables.size()); + return m_renderables[renderableIndex].data.localMatrix; + } + + inline const Nz::Matrix4f& GraphicsComponent::GetTransformMatrix(std::size_t renderableIndex) const + { + EnsureBoundingVolumesUpdate(); + + assert(renderableIndex < m_renderables.size()); + return m_renderables[renderableIndex].data.transformMatrix; + } + /*! * \brief Calls a function for every renderable attached to this component * diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 407267fcd..2354a799a 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -39,7 +39,9 @@ namespace Ndk void MakeBoundingVolume() const override { - m_boundingVolume.MakeNull(); + // We generate an infinite bounding volume so that we're always considered for rendering when culling does occurs + // (bounding volume culling happens only if GraphicsComponent AABB partially fail) + m_boundingVolume.MakeInfinite(); } protected: @@ -71,7 +73,9 @@ namespace Ndk renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); }; + // Maybe we should draw the global AABB (using another color) //DrawBox(entityGfx.GetAABB()); + for (std::size_t i = 0; i < entityGfx.GetAttachedRenderableCount(); ++i) { const Nz::BoundingVolumef& boundingVolume = entityGfx.GetBoundingVolume(i); @@ -95,19 +99,25 @@ namespace Ndk { NazaraAssert(m_entityOwner, "DebugRenderable has no owner"); - // TODO - /*const DebugComponent& entityDebug = m_entityOwner->GetComponent(); + const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); - Nz::Boxf obb = entityGfx.GetAABB().obb.localBox; + auto DrawBox = [&](const Nz::Boxf& box, const Nz::Matrix4f& transformMatrix) + { + Nz::Matrix4f boxMatrix = Nz::Matrix4f::Identity(); + boxMatrix.SetScale(box.GetLengths()); + boxMatrix.SetTranslation(box.GetCenter()); + boxMatrix.ConcatenateAffine(transformMatrix); - Nz::Matrix4f transformMatrix = instanceData.transformMatrix; - Nz::Vector3f obbCenter = transformMatrix.Transform(obb.GetCenter(), 0.f); //< Apply rotation/scale to obb center, to display it at a correct position + renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), boxMatrix, scissorRect); + }; - transformMatrix.ApplyScale(obb.GetLengths()); - transformMatrix.ApplyTranslation(obbCenter); - - renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect);*/ + for (std::size_t i = 0; i < entityGfx.GetAttachedRenderableCount(); ++i) + { + const Nz::BoundingVolumef& boundingVolume = entityGfx.GetBoundingVolume(i); + if (boundingVolume.IsFinite()) + DrawBox(boundingVolume.obb.localBox, entityGfx.GetTransformMatrix(i)); + } } std::unique_ptr Clone() const override From a5c2a433f8b6f8f552fb9a7a00d73b351723bd42 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 31 Aug 2018 22:01:06 +0200 Subject: [PATCH 129/194] Sdk/DebugSystem: Draw global AABB in orange --- SDK/include/NDK/Systems/DebugSystem.hpp | 6 ++- SDK/src/NDK/Systems/DebugSystem.cpp | 67 +++++++++++++++++-------- 2 files changed, 51 insertions(+), 22 deletions(-) diff --git a/SDK/include/NDK/Systems/DebugSystem.hpp b/SDK/include/NDK/Systems/DebugSystem.hpp index 940feb782..3dd186f36 100644 --- a/SDK/include/NDK/Systems/DebugSystem.hpp +++ b/SDK/include/NDK/Systems/DebugSystem.hpp @@ -28,8 +28,9 @@ namespace Ndk Nz::InstancedRenderableRef GenerateBox(Nz::Boxf box); Nz::InstancedRenderableRef GenerateCollision3DMesh(Entity* entity); - Nz::MaterialRef GetAABBMaterial(); Nz::MaterialRef GetCollisionMaterial(); + Nz::MaterialRef GetGlobalAABBMaterial(); + Nz::MaterialRef GetLocalAABBMaterial(); Nz::MaterialRef GetOBBMaterial(); std::pair GetBoxMesh(); @@ -37,7 +38,8 @@ namespace Ndk void OnUpdate(float elapsedTime) override; - Nz::MaterialRef m_aabbMaterial; + Nz::MaterialRef m_globalAabbMaterial; + Nz::MaterialRef m_localAabbMaterial; Nz::MaterialRef m_collisionMaterial; Nz::MaterialRef m_obbMaterial; Nz::IndexBufferRef m_boxMeshIndexBuffer; diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 2354a799a..28cd53dee 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -20,9 +20,8 @@ namespace Ndk class DebugRenderable : public Nz::InstancedRenderable { public: - DebugRenderable(Ndk::Entity* owner, Nz::MaterialRef mat, Nz::IndexBufferRef indexBuffer, Nz::VertexBufferRef vertexBuffer) : + DebugRenderable(Ndk::Entity* owner, Nz::IndexBufferRef indexBuffer, Nz::VertexBufferRef vertexBuffer) : m_entityOwner(owner), - m_material(std::move(mat)), m_indexBuffer(std::move(indexBuffer)), m_vertexBuffer(std::move(vertexBuffer)) { @@ -33,7 +32,7 @@ namespace Ndk m_meshData.vertexBuffer = m_vertexBuffer; } - void UpdateBoundingVolume(InstanceData* instanceData) const override + void UpdateBoundingVolume(InstanceData* /*instanceData*/) const override { } @@ -47,7 +46,6 @@ namespace Ndk protected: Ndk::EntityHandle m_entityOwner; Nz::IndexBufferRef m_indexBuffer; - Nz::MaterialRef m_material; Nz::MeshData m_meshData; Nz::VertexBufferRef m_vertexBuffer; }; @@ -55,7 +53,12 @@ namespace Ndk class AABBDebugRenderable : public DebugRenderable { public: - using DebugRenderable::DebugRenderable; + AABBDebugRenderable(Ndk::Entity* owner, Nz::MaterialRef globalMaterial, Nz::MaterialRef localMaterial, Nz::IndexBufferRef indexBuffer, Nz::VertexBufferRef vertexBuffer) : + DebugRenderable(owner, std::move(indexBuffer), std::move(vertexBuffer)), + m_globalMaterial(std::move(globalMaterial)), + m_localMaterial(std::move(localMaterial)) + { + } void AddToRenderQueue(Nz::AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Nz::Recti& scissorRect) const override { @@ -64,23 +67,22 @@ namespace Ndk const DebugComponent& entityDebug = m_entityOwner->GetComponent(); const GraphicsComponent& entityGfx = m_entityOwner->GetComponent(); - auto DrawBox = [&](const Nz::Boxf& box) + auto DrawBox = [&](const Nz::Boxf& box, const Nz::MaterialRef& mat) { Nz::Matrix4f transformMatrix = Nz::Matrix4f::Identity(); transformMatrix.SetScale(box.GetLengths()); transformMatrix.SetTranslation(box.GetCenter()); - renderQueue->AddMesh(0, m_material, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); + renderQueue->AddMesh(0, mat, m_meshData, Nz::Boxf::Zero(), transformMatrix, scissorRect); }; - // Maybe we should draw the global AABB (using another color) - //DrawBox(entityGfx.GetAABB()); + DrawBox(entityGfx.GetAABB(), m_globalMaterial); for (std::size_t i = 0; i < entityGfx.GetAttachedRenderableCount(); ++i) { const Nz::BoundingVolumef& boundingVolume = entityGfx.GetBoundingVolume(i); if (boundingVolume.IsFinite()) - DrawBox(boundingVolume.aabb); + DrawBox(boundingVolume.aabb, m_localMaterial); } } @@ -88,12 +90,20 @@ namespace Ndk { return nullptr; } + + private: + Nz::MaterialRef m_globalMaterial; + Nz::MaterialRef m_localMaterial; }; class OBBDebugRenderable : public DebugRenderable { public: - using DebugRenderable::DebugRenderable; + OBBDebugRenderable(Ndk::Entity* owner, Nz::MaterialRef material, Nz::IndexBufferRef indexBuffer, Nz::VertexBufferRef vertexBuffer) : + DebugRenderable(owner, std::move(indexBuffer), std::move(vertexBuffer)), + m_material(std::move(material)) + { + } void AddToRenderQueue(Nz::AbstractRenderQueue* renderQueue, const InstanceData& instanceData, const Nz::Recti& scissorRect) const override { @@ -124,6 +134,9 @@ namespace Ndk { return nullptr; } + + private: + Nz::MaterialRef m_material; }; } @@ -234,7 +247,7 @@ namespace Ndk { auto indexVertexBuffers = GetBoxMesh(); - Nz::InstancedRenderableRef renderable = new AABBDebugRenderable(entity, GetAABBMaterial(), indexVertexBuffers.first, indexVertexBuffers.second); + Nz::InstancedRenderableRef renderable = new AABBDebugRenderable(entity, GetGlobalAABBMaterial(), GetLocalAABBMaterial(), indexVertexBuffers.first, indexVertexBuffers.second); renderable->SetPersistent(false); entityGfx.Attach(renderable, Nz::Matrix4f::Identity(), DebugDrawOrder); @@ -356,18 +369,32 @@ namespace Ndk return nullptr; } - Nz::MaterialRef DebugSystem::GetAABBMaterial() + Nz::MaterialRef DebugSystem::GetGlobalAABBMaterial() { - if (!m_aabbMaterial) + if (!m_globalAabbMaterial) { - m_aabbMaterial = Nz::Material::New(); - m_aabbMaterial->EnableFaceCulling(false); - m_aabbMaterial->EnableDepthBuffer(true); - m_aabbMaterial->SetDiffuseColor(Nz::Color::Red); - m_aabbMaterial->SetFaceFilling(Nz::FaceFilling_Line); + m_globalAabbMaterial = Nz::Material::New(); + m_globalAabbMaterial->EnableFaceCulling(false); + m_globalAabbMaterial->EnableDepthBuffer(true); + m_globalAabbMaterial->SetDiffuseColor(Nz::Color::Orange); + m_globalAabbMaterial->SetFaceFilling(Nz::FaceFilling_Line); } - return m_aabbMaterial; + return m_globalAabbMaterial; + } + + Nz::MaterialRef DebugSystem::GetLocalAABBMaterial() + { + if (!m_localAabbMaterial) + { + m_localAabbMaterial = Nz::Material::New(); + m_localAabbMaterial->EnableFaceCulling(false); + m_localAabbMaterial->EnableDepthBuffer(true); + m_localAabbMaterial->SetDiffuseColor(Nz::Color::Red); + m_localAabbMaterial->SetFaceFilling(Nz::FaceFilling_Line); + } + + return m_localAabbMaterial; } Nz::MaterialRef DebugSystem::GetCollisionMaterial() From 566e5b4dcf3657246c8a7eabeae90429e9ce5504 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 31 Aug 2018 22:01:21 +0200 Subject: [PATCH 130/194] Sdk/DebugSystem: Increase line width to 2 --- SDK/src/NDK/Systems/DebugSystem.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SDK/src/NDK/Systems/DebugSystem.cpp b/SDK/src/NDK/Systems/DebugSystem.cpp index 28cd53dee..063a25d77 100644 --- a/SDK/src/NDK/Systems/DebugSystem.cpp +++ b/SDK/src/NDK/Systems/DebugSystem.cpp @@ -378,6 +378,7 @@ namespace Ndk m_globalAabbMaterial->EnableDepthBuffer(true); m_globalAabbMaterial->SetDiffuseColor(Nz::Color::Orange); m_globalAabbMaterial->SetFaceFilling(Nz::FaceFilling_Line); + m_globalAabbMaterial->SetLineWidth(2.f); } return m_globalAabbMaterial; @@ -392,6 +393,7 @@ namespace Ndk m_localAabbMaterial->EnableDepthBuffer(true); m_localAabbMaterial->SetDiffuseColor(Nz::Color::Red); m_localAabbMaterial->SetFaceFilling(Nz::FaceFilling_Line); + m_localAabbMaterial->SetLineWidth(2.f); } return m_localAabbMaterial; @@ -406,6 +408,7 @@ namespace Ndk m_collisionMaterial->EnableDepthBuffer(true); m_collisionMaterial->SetDiffuseColor(Nz::Color::Blue); m_collisionMaterial->SetFaceFilling(Nz::FaceFilling_Line); + m_collisionMaterial->SetLineWidth(2.f); } return m_collisionMaterial; @@ -420,6 +423,7 @@ namespace Ndk m_obbMaterial->EnableDepthBuffer(true); m_obbMaterial->SetDiffuseColor(Nz::Color::Green); m_obbMaterial->SetFaceFilling(Nz::FaceFilling_Line); + m_obbMaterial->SetLineWidth(2.f); } return m_obbMaterial; From 03d2742fed49016cc0ff30617a8f8be21bc45e8a Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 31 Aug 2018 22:07:47 +0200 Subject: [PATCH 131/194] Demo: Fix Particles not building --- examples/Particles/SpacebattleDemo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/Particles/SpacebattleDemo.cpp b/examples/Particles/SpacebattleDemo.cpp index 0fe08d8f3..2bd30940c 100644 --- a/examples/Particles/SpacebattleDemo.cpp +++ b/examples/Particles/SpacebattleDemo.cpp @@ -662,7 +662,7 @@ void SpacebattleExample::Enter(Ndk::StateMachine& fsm) Ndk::NodeComponent& cannonNode = m_turret.cannonEntity->GetComponent(); - Nz::Boxf introAABB = introGfx.GetBoundingVolume().aabb; + Nz::Boxf introAABB = introGfx.GetAABB(); introNode.SetPosition(cannonNode.GetForward() * 500.f + introNode.GetLeft() * introAABB.width / 2.f + introNode.GetUp() * introAABB.height / 2.f); } From b1241da2a657daed44a7edba2576a3863cf33a5a Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 31 Aug 2018 22:17:40 +0200 Subject: [PATCH 132/194] Fill changelog [skip-ci] --- ChangeLog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 8f433fe57..fb8d26b03 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -142,6 +142,8 @@ Nazara Engine: - Fixed vertices generation/render queue submit when using multiples materials on a Tilemap - It is now possible to prevent CompoundCollider2D to override individual colliders properties - Fixed TcpClient::WaitForConnected possible failure (although connected) on Windows/Linux +- CullingList now handles box tests +- ⚠️ CullingList now handles full and partial visibility testing Nazara Development Kit: - Added ImageWidget (#139) @@ -200,6 +202,8 @@ Nazara Development Kit: - It is now possible to disable object culling in the RenderSystem - Make Nz::PhysWorld2D& Ndk::PhysicsSystem2D::GetWorld private and rename it into GetPhysWorld - Make Ndk::PhysicsSystem2D an interface of Nz::PhysWorld2D +- ⚠️ GraphicsComponent no longer has a BoundingVolume, it instead has only an AABB with its attached InstancedRenderable getting a BoundingVolume of their own, improving culling possibilities. +- RenderSystem now does cull InstancedRenderables attached to a GraphicsComponent, improving performance. # 0.4: From 960af3afa3d824caef4dda76a94615fe89ff2da4 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 1 Sep 2018 13:22:37 +0200 Subject: [PATCH 133/194] Fix example not compiling --- examples/Tut01/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/Tut01/main.cpp b/examples/Tut01/main.cpp index 8a3df36ff..9d53b7b5e 100644 --- a/examples/Tut01/main.cpp +++ b/examples/Tut01/main.cpp @@ -39,7 +39,7 @@ int main(int argc, char* argv[]) Ndk::GraphicsComponent& graphicsComponent = text->AddComponent(); graphicsComponent.Attach(textSprite); - Nz::Boxf textBox = graphicsComponent.GetBoundingVolume().aabb; + Nz::Boxf textBox = graphicsComponent.GetAABB(); Nz::Vector2ui windowSize = mainWindow.GetSize(); nodeComponent.SetPosition(windowSize.x / 2 - textBox.width / 2, windowSize.y / 2 - textBox.height / 2); From f59810b68ea4ee972385218b2bd13f0da04354a8 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 2 Sep 2018 22:06:03 +0200 Subject: [PATCH 134/194] Math: Add Angle class --- include/Nazara/Math/Angle.hpp | 89 ++++++++ include/Nazara/Math/Angle.inl | 406 ++++++++++++++++++++++++++++++++++ tests/Engine/Math/Angle.cpp | 128 +++++++++++ 3 files changed, 623 insertions(+) create mode 100644 include/Nazara/Math/Angle.hpp create mode 100644 include/Nazara/Math/Angle.inl create mode 100644 tests/Engine/Math/Angle.cpp diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp new file mode 100644 index 000000000..ccf770959 --- /dev/null +++ b/include/Nazara/Math/Angle.hpp @@ -0,0 +1,89 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Mathematics module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_ANGLE_HPP +#define NAZARA_ANGLE_HPP + +#include +#include +#include +#include + +namespace Nz +{ + struct SerializationContext; + + template + class Angle + { + public: + Angle() = default; + Angle(T Angle); + template> explicit Angle(const Angle& Angle) { Set(Angle); } + template> explicit Angle(const Angle& Angle) { Set(Angle); } + template explicit Angle(const Angle& Angle); + Angle(const Angle&) = default; + ~Angle() = default; + + Angle& MakeZero(); + + void Normalize(); + + template> Angle& Set(const Angle& Angle); + template> Angle& Set(const Angle& Angle); + Angle& Set(const Angle& Angle); + template Angle& Set(const Angle& Angle); + + Angle ToDegrees() const; + Angle ToRadians() const; + String ToString() const; + + Angle& operator=(const Angle&) = default; + + Angle operator+(const Angle& Angle) const; + Angle operator-(const Angle& Angle) const; + + Angle& operator+=(const Angle& Angle); + Angle& operator-=(const Angle& Angle); + Angle& operator*=(T scalar); + Angle& operator/=(T divider); + + bool operator==(const Angle& Angle) const; + bool operator!=(const Angle& Angle) const; + + static Angle Zero(); + + T angle; + }; + + template + using DegreeAngle = Angle; + + using DegreeAngled = DegreeAngle; + using DegreeAnglef = DegreeAngle; + + template + using RadianAngle = Angle; + + using RadianAngled = RadianAngle; + using RadianAnglef = RadianAngle; + + template bool Serialize(SerializationContext& context, const Angle& angle, TypeTag>); + template bool Unserialize(SerializationContext& context, Angle* angle, TypeTag>); +} + +template +Nz::Angle operator*(T scale, const Nz::Angle& angle); + +template +Nz::Angle operator/(T divider, const Nz::Angle& angle); + +template +std::ostream& operator<<(std::ostream& out, const Nz::Angle& angle); + +#include + +#endif // NAZARA_ANGLE_HPP diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl new file mode 100644 index 000000000..0e8f8dbfe --- /dev/null +++ b/include/Nazara/Math/Angle.inl @@ -0,0 +1,406 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Mathematics module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include +#include + +namespace Nz +{ + namespace Detail + { + template struct AngleUtils; + + template<> + struct AngleUtils + { + template static constexpr T GetLimit() + { + return 180; + } + + template static T FromDegrees(T degrees) + { + return degrees; + } + + template static T FromRadians(T radians) + { + return RadianToDegree(radians); + } + + template static T ToDegrees(T degrees) + { + return degrees; + } + + template static T ToRadians(T degrees) + { + return DegreeToRadian(degrees); + } + + template static String ToString(T value) + { + return "Angle(" + String::Number(value) + "deg)"; + } + + template static std::ostream& ToString(std::ostream& out, T value) + { + return out << "Angle(" << value << "deg)"; + } + }; + + template<> + struct AngleUtils + { + template static constexpr T GetLimit() + { + return M_PI; + } + + template static T FromDegrees(T degrees) + { + return DegreeToRadian(degrees); + } + + template static T FromRadians(T radians) + { + return radians; + } + + template static T ToDegrees(T radians) + { + return RadianToDegree(radians); + } + + template static T ToRadians(T radians) + { + return radians; + } + + template static String ToString(T value) + { + return "Angle(" + String::Number(value) + "rad)"; + } + + template static std::ostream& ToString(std::ostream& out, T value) + { + return out << "Angle(" << value << "rad)"; + } + }; + } + /*! + * \ingroup math + * \class Nz::Angle + * \brief Math class that represents an angle + */ + + /*! + * \brief Constructs an Angle object with an angle value + * + * \param Angle value of the angle + */ + template + Angle::Angle(T Angle) : + angle(Angle) + { + } + + /*! + * \brief Changes the angle value to zero + */ + template + Angle& Angle::MakeZero() + { + angle = T(0); + } + + /*! + * \brief Normalizes the angle value + * + * If angle exceeds local limits positively or negatively, bring it back between them. + * For degree angles, local limits are [-180, 180] + * For radian angles, local limits are [-M_PI, M_PI] + */ + template + void Angle::Normalize() + { + constexpr T limit = Detail::AngleUtils::GetLimit(); + constexpr T twoLimit = limit * T(2); + + angle = std::fmod(angle, twoLimit); + if (angle < T(0)) + angle += twoLimit; + } + + /*! + * \brief Changes the angle value by converting a radian angle + * + * \param Angle Radian angle which will be converted + */ + template + template + Angle& Angle::Set(const Angle& Angle) + { + angle = RadianToDegree(Angle.angle); + return *this; + } + + /*! + * \brief Changes the angle value by converting a degree angle + * + * \param Angle Degree angle which will be converted + */ + template + template + Angle& Angle::Set(const Angle& Angle) + { + angle = DegreeToRadian(Angle.angle); + return *this; + } + + /*! + * \brief Copies the angle value of an angle + * + * \param Angle Angle which will be copied + */ + template + Angle& Angle::Set(const Angle& Angle) + { + angle = Angle.angle; + return *this; + } + + /*! + * \brief Changes the angle value to the same as an Angle of a different type + * + * \param Angle Angle which will be casted + * + * \remark Conversion from U to T occurs using static_cast + */ + template + template + Angle& Angle::Set(const Angle& Angle) + { + angle = static_cast(Angle.angle); + return *this; + } + + /*! + * \brief Returns the degree angle that is equivalent to this one + * \return Equivalent degree angle + */ + template + Angle Angle::ToDegrees() const + { + return DegreeAngle(Detail::AngleUtils::ToDegrees(angle)); + } + + /*! + * \brief Returns the radian angle that is equivalent to this angle + * \return Equivalent radian angle + */ + template + Angle Angle::ToRadians() const + { + return RadianAngle(Detail::AngleUtils::ToRadians(angle)); + } + + /*! + * \brief Converts the angle to a string representation + * \return String representation of the angle + */ + template + String Angle::ToString() const + { + return Detail::AngleUtils::ToString(angle); + } + + /*! + * \brief Addition operator + * \return Adds two angles together + * + * \param angle Angle to add + */ + template + Angle Angle::operator+(const Angle& Angle) const + { + return Angle(angle + Angle.angle); + } + + /*! + * \brief Subtraction operator + * \return Subtracts two angles together + * + * \param angle Angle to subtract + */ + template + Angle Angle::operator-(const Angle& Angle) const + { + return Angle(angle - Angle.angle); + } + + /*! + * \brief Adds an angle by another + * \return A reference to the angle + * + * \param angle Angle to add + */ + template + Angle& Angle::operator+=(const Angle& Angle) + { + angle += Angle.angle; + return *this; + } + + /*! + * \brief Subtract an angle by another + * \return A reference to the angle + * + * \param angle Angle to subtract + */ + template + Angle& Angle::operator-=(const Angle& Angle) + { + angle -= Angle.angle; + return *this; + } + + /*! + * \brief Scales the angle by a scalar + * \return A reference to the angle + * + * \param scalar Multiplier + */ + template + Angle& Angle::operator*=(T scalar) + { + angle *= scalar; + return *this; + } + + /*! + * \brief Divides the angle by a scalar + * \return A reference to the angle + * + * \param divider Divider + */ + template + Angle& Angle::operator/=(T divider) + { + angle /= divider; + return *this; + } + + /*! + * \brief Compares the angle to another for equality + * \return True if both angles are equal + * + * \param Angle The other angle to compare to + */ + template + bool Angle::operator==(const Angle& Angle) const + { + return NumberEquals(angle, Angle.angle); + } + + /*! + * \brief Compares the angle to another for inequality + * \return True if both angles are equal + * + * \param Angle The other angle to compare to + */ + template + bool Angle::operator!=(const Angle& Angle) const + { + return !NumberEquals(angle, Angle.angle); + } + + /*! + * \brief Returns an angle with an angle of zero + * \return Zero angle + */ + template + Angle Angle::Zero() + { + Angle angle; + angle.MakeZero(); + + return angle; + } + + /*! + * \brief Serializes an Angle + * \return true if successfully serialized + * + * \param context Serialization context + * \param angle Input Angle + */ + template + bool Serialize(SerializationContext& context, const Angle& angle, TypeTag>) + { + if (!Serialize(context, angle.angle)) + return false; + + return true; + } + + /*! + * \brief Unserializes an Angle + * \return true if successfully unserialized + * + * \param context Serialization context + * \param angle Output Angle + */ + template + bool Unserialize(SerializationContext& context, Angle* angle, TypeTag>) + { + if (!Unserialize(context, &angle->angle)) + return false; + + return true; + } +} + +/*! +* \brief Multiplication operator +* \return An angle corresponding to scale * angle +* +* \param scale Multiplier +* \param angle Angle +*/ +template +Nz::Angle operator*(T scale, const Nz::Angle& angle) +{ + return Nz::Angle(scale * angle.angle); +} + +/*! +* \brief Division operator +* \return An angle corresponding to scale / angle +* +* \param scale Divisor +* \param angle Angle +*/ +template +Nz::Angle operator/(T scale, const Nz::Angle& angle) +{ + return Nz::Angle(scale / angle.angle); +} + +/*! +* \brief Output operator +* \return The stream +* +* \param out The stream +* \param box The box to output +*/ +template +std::ostream& operator<<(std::ostream& out, const Nz::Angle& angle) +{ + return Nz::Detail::AngleUtils::ToString(out, angle.angle); +} + +#include diff --git a/tests/Engine/Math/Angle.cpp b/tests/Engine/Math/Angle.cpp new file mode 100644 index 000000000..81e83c261 --- /dev/null +++ b/tests/Engine/Math/Angle.cpp @@ -0,0 +1,128 @@ +#include +#include + +SCENARIO("Angle", "[MATH][ANGLE]") +{ + GIVEN("A degree angle of 90deg") + { + Nz::DegreeAnglef angle(90.f); + + WHEN("We convert it to degrees") + { + Nz::DegreeAnglef copyAngle = angle.ToDegrees(); + + THEN("It should compare to itself") + { + CHECK(angle == copyAngle); + } + } + + WHEN("We convert it to radians") + { + Nz::RadianAnglef radAngle(angle); + + THEN("It should be equal to pi/2") + { + Nz::RadianAnglef expectedResult(float(M_PI_2)); + + CHECK(radAngle == expectedResult); + CHECK(angle.ToRadians() == expectedResult); + } + } + } + + GIVEN("A degree angle of 480deg") + { + Nz::DegreeAnglef angle(480.f); + + WHEN("We normalize it") + { + angle.Normalize(); + + THEN("It should be equal to a normalized version of itself") + { + Nz::DegreeAnglef expectedResult(120.f); + + CHECK(angle == expectedResult); + } + } + } + + GIVEN("A degree angle of -270deg") + { + Nz::DegreeAnglef angle(-270.f); + + WHEN("We normalize it") + { + angle.Normalize(); + + THEN("It should be equal to a normalized version of itself") + { + Nz::DegreeAnglef expectedResult(90.f); + + CHECK(angle == expectedResult); + } + } + } + + GIVEN("A radian angle of -M_PI") + { + Nz::RadianAnglef angle(float(-M_PI)); + + WHEN("We convert it to radians") + { + Nz::RadianAnglef copyAngle = angle.ToRadians(); + + THEN("It should compare to itself") + { + CHECK(angle == copyAngle); + } + } + + WHEN("We convert it to degrees") + { + Nz::DegreeAnglef degAngle(angle); + + THEN("It should be equal to pi/2") + { + Nz::DegreeAnglef expectedResult(-180.f); + + CHECK(degAngle == expectedResult); + CHECK(angle.ToDegrees() == expectedResult); + } + } + } + GIVEN("A radian angle of 7pi") + { + Nz::RadianAnglef angle(float(7 * M_PI)); + + WHEN("We normalize it") + { + angle.Normalize(); + + THEN("It should be equal to a normalized version of itself") + { + Nz::RadianAnglef expectedResult(float(M_PI)); + + CHECK(angle == expectedResult); + } + } + } + + GIVEN("A radian angle of -4pi") + { + Nz::RadianAnglef angle(float(-4 * M_PI)); + + WHEN("We normalize it") + { + angle.Normalize(); + + THEN("It should be equal to a normalized version of itself") + { + Nz::RadianAnglef expectedResult(0.f); + + CHECK(angle == expectedResult); + } + } + } +} From 3cc70daf3e4ef586f5a8dcb746112ebc2839dafe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 5 Sep 2018 15:13:39 +0200 Subject: [PATCH 135/194] Fix missing file --- include/Nazara/Math/Enums.hpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/Nazara/Math/Enums.hpp b/include/Nazara/Math/Enums.hpp index 0430df83a..78f36942b 100644 --- a/include/Nazara/Math/Enums.hpp +++ b/include/Nazara/Math/Enums.hpp @@ -9,6 +9,12 @@ namespace Nz { + enum class AngleUnit + { + Degree, + Radian + }; + enum BoxCorner { BoxCorner_FarLeftBottom, From 9e0b61f30d995a7c5f5640039aeb8fb502b0629f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 5 Sep 2018 15:14:31 +0200 Subject: [PATCH 136/194] Math/Angle: Add sine, cosine, tangent methods --- include/Nazara/Math/Angle.hpp | 6 +++ include/Nazara/Math/Angle.inl | 78 +++++++++++++++++++++++++++++++++-- tests/Engine/Math/Angle.cpp | 47 +++++++++++++++++++-- 3 files changed, 125 insertions(+), 6 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index ccf770959..e1c904204 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -11,6 +11,7 @@ #include #include #include +#include namespace Nz { @@ -28,6 +29,11 @@ namespace Nz Angle(const Angle&) = default; ~Angle() = default; + T GetCos() const; + T GetSin() const; + std::pair GetSinCos() const; + T GetTan() const; + Angle& MakeZero(); void Normalize(); diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index 0e8f8dbfe..e04a751d9 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -16,6 +16,11 @@ namespace Nz template<> struct AngleUtils { + template static constexpr T GetEpsilon() + { + return T(1e-4); + } + template static constexpr T GetLimit() { return 180; @@ -55,9 +60,14 @@ namespace Nz template<> struct AngleUtils { + template static constexpr T GetEpsilon() + { + return T(1e-5); + } + template static constexpr T GetLimit() { - return M_PI; + return T(M_PI); } template static T FromDegrees(T degrees) @@ -90,6 +100,14 @@ namespace Nz return out << "Angle(" << value << "rad)"; } }; + + // Naive implementation, hopefully optimized by the compiler + template + void SinCos(T x, T* sin, T* cos) + { + *sin = std::sin(x); + *cos = std::cos(x); + } } /*! * \ingroup math @@ -108,6 +126,59 @@ namespace Nz { } + /*! + * \brief Computes the cosine of the angle + * \return Cosine of angle + * + * \see GetSinCos + */ + template + T Angle::GetCos() const + { + return std::cos(ToRadians().angle); + } + + /*! + * \brief Computes the sine of the angle + * \return Sine of angle + * + * \see GetSinCos + */ + template + T Angle::GetSin() const + { + return std::sin(ToRadians().angle); + } + + /*! + * \brief Computes both sines and cosines of the angle + * \return Sine and cosine of the angle + * + * \remark This is potentially faster than calling both GetSin and GetCos separately as it can computes both values at the same time. + * + * \see GetCos, GetSin + */ + template + std::pair Angle::GetSinCos() const + { + T sin, cos; + Detail::SinCos(ToRadians().angle, &sin, &cos); + + return std::make_pair(sin, cos); + } + + /*! + * \brief Computes the tangent of the angle + * \return Tangent value of the angle + * + * \see GetCos, GetSin + */ + template + T Angle::GetTan() const + { + return std::tan(ToRadians().angle); + } + /*! * \brief Changes the angle value to zero */ @@ -115,6 +186,7 @@ namespace Nz Angle& Angle::MakeZero() { angle = T(0); + return *this; } /*! @@ -303,7 +375,7 @@ namespace Nz template bool Angle::operator==(const Angle& Angle) const { - return NumberEquals(angle, Angle.angle); + return NumberEquals(angle, Angle.angle, Detail::AngleUtils::GetEpsilon()); } /*! @@ -315,7 +387,7 @@ namespace Nz template bool Angle::operator!=(const Angle& Angle) const { - return !NumberEquals(angle, Angle.angle); + return !NumberEquals(angle, Angle.angle, Detail::AngleUtils::GetEpsilon()); } /*! diff --git a/tests/Engine/Math/Angle.cpp b/tests/Engine/Math/Angle.cpp index 81e83c261..a4abc4a82 100644 --- a/tests/Engine/Math/Angle.cpp +++ b/tests/Engine/Math/Angle.cpp @@ -29,6 +29,26 @@ SCENARIO("Angle", "[MATH][ANGLE]") CHECK(angle.ToRadians() == expectedResult); } } + + WHEN("We compute its sinus/cosinus separatly") + { + THEN("It should be equal to 1 and 0") + { + CHECK(angle.GetSin() == Approx(1.f).margin(0.0001f)); + CHECK(angle.GetCos() == Approx(0.f).margin(0.0001f)); + } + + } + AND_WHEN("We compute it at the same time") + { + auto sincos = angle.GetSinCos(); + + THEN("It should also be equal to 1 and 0") + { + CHECK(sincos.first == Approx(1.f).margin(0.0001f)); + CHECK(sincos.second == Approx(0.f).margin(0.0001f)); + } + } } GIVEN("A degree angle of 480deg") @@ -48,9 +68,9 @@ SCENARIO("Angle", "[MATH][ANGLE]") } } - GIVEN("A degree angle of -270deg") + GIVEN("A degree angle of -300deg") { - Nz::DegreeAnglef angle(-270.f); + Nz::DegreeAnglef angle(-300.f); WHEN("We normalize it") { @@ -58,7 +78,7 @@ SCENARIO("Angle", "[MATH][ANGLE]") THEN("It should be equal to a normalized version of itself") { - Nz::DegreeAnglef expectedResult(90.f); + Nz::DegreeAnglef expectedResult(60.f); CHECK(angle == expectedResult); } @@ -91,7 +111,28 @@ SCENARIO("Angle", "[MATH][ANGLE]") CHECK(angle.ToDegrees() == expectedResult); } } + + WHEN("We compute its sinus/cosinus separatly") + { + THEN("It should be equal to 0 and -1") + { + CHECK(angle.GetSin() == Approx(0.f).margin(0.0001f)); + CHECK(angle.GetCos() == Approx(-1.f).margin(0.0001f)); + } + + } + AND_WHEN("We compute it at the same time") + { + auto sincos = angle.GetSinCos(); + + THEN("It should also be equal to 0 and -1") + { + CHECK(sincos.first == Approx(0.f).margin(0.0001f)); + CHECK(sincos.second == Approx(-1.f).margin(0.0001f)); + } + } } + GIVEN("A radian angle of 7pi") { Nz::RadianAnglef angle(float(7 * M_PI)); From f0e215f8f51e5faaac9617c560f34014ceff49f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 5 Sep 2018 15:15:02 +0200 Subject: [PATCH 137/194] Math/Angle: Optimize SinCos on Linux --- build/scripts/modules/core.lua | 1 + include/Nazara/Math/Angle.inl | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/build/scripts/modules/core.lua b/build/scripts/modules/core.lua index ae87461e8..e998080f8 100644 --- a/build/scripts/modules/core.lua +++ b/build/scripts/modules/core.lua @@ -19,5 +19,6 @@ MODULE.OsFiles.Posix = { MODULE.OsLibraries.Posix = { "dl", + "m", -- Math library (for sincos()) "pthread" } diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index e04a751d9..c22e99e2c 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -5,6 +5,11 @@ #include #include #include + +#ifdef NAZARA_PLATFORM_POSIX +#include //< sincos +#endif + #include namespace Nz @@ -101,6 +106,29 @@ namespace Nz } }; +#ifdef NAZARA_PLATFORM_POSIX + template + void SinCos(std::enable_if_t::value && !std::is_same::value, double> x, T* sin, T* cos) + { + double s, c; + ::sincos(x, &s, &c); + + *sin = static_cast(s); + *cos = static_cast(c); + } + + template + void SinCos(std::enable_if_t::value, float> x, float* s, float* cos) + { + ::sincosf(x, s, c); + } + + template + void SinCos(std::enable_if_t::value, long double> x, long double* s, long double* c) + { + ::sincosl(x, sin, cos); + } +#else // Naive implementation, hopefully optimized by the compiler template void SinCos(T x, T* sin, T* cos) @@ -108,6 +136,7 @@ namespace Nz *sin = std::sin(x); *cos = std::cos(x); } +#endif } /*! * \ingroup math From 97cdb110aef5bb75ba225a795d30f3534472e239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 5 Sep 2018 15:15:26 +0200 Subject: [PATCH 138/194] Unit test fixes --- tests/Engine/Physics2D/RigidBody2D.cpp | 4 ++-- tests/SDK/NDK/Systems/PhysicsSystem2D.cpp | 2 +- tests/SDK/NDK/Systems/RenderSystem.cpp | 5 ++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/Engine/Physics2D/RigidBody2D.cpp b/tests/Engine/Physics2D/RigidBody2D.cpp index 0da831cfc..e801cc849 100644 --- a/tests/Engine/Physics2D/RigidBody2D.cpp +++ b/tests/Engine/Physics2D/RigidBody2D.cpp @@ -126,7 +126,7 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") { CHECK(body.GetAABB() == aabb); CHECK(body.GetAngularVelocity() == Approx(0.f)); - CHECK(body.GetCenterOfGravity() == Nz::Vector2f::Zero()); + CHECK(body.GetMassCenter() == Nz::Vector2f::Zero()); CHECK(body.GetGeom() == box); CHECK(body.GetMass() == Approx(mass)); CHECK(body.GetPosition() == position); @@ -150,7 +150,7 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") { aabb.Translate(velocity); CHECK(body.GetAABB() == aabb); - CHECK(body.GetCenterOfGravity() == Nz::Vector2f::Zero()); + CHECK(body.GetMassCenter() == Nz::Vector2f::Zero()); CHECK(body.GetPosition() == position); CHECK(body.GetVelocity() == velocity); } diff --git a/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp b/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp index 3cda3f0f1..33871be57 100644 --- a/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp +++ b/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp @@ -38,7 +38,7 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") WHEN("We make it collide with a wall") { int rawDistance = 3; - Nz::Vector2f distance(rawDistance, 0.f); + Nz::Vector2f distance(float(rawDistance), 0.f); Nz::Vector2f wallPosition = position + Nz::Vector2f(movingAABB.width, 0.f) + distance; Nz::Rectf wallAABB(0.f, 0.f, 100.f, 100.f); Ndk::EntityHandle wallEntity = CreateBaseEntity(world, wallPosition, wallAABB); diff --git a/tests/SDK/NDK/Systems/RenderSystem.cpp b/tests/SDK/NDK/Systems/RenderSystem.cpp index a94109b9d..09fb6add2 100644 --- a/tests/SDK/NDK/Systems/RenderSystem.cpp +++ b/tests/SDK/NDK/Systems/RenderSystem.cpp @@ -6,7 +6,7 @@ #include #include -void CompareAABB(const Nz::Rectf& aabb, const Nz::BoundingVolumef& boundingVolume); +void CompareAABB(const Nz::Rectf& aabb, const Nz::Boxf& box); SCENARIO("RenderSystem", "[NDK][RenderSystem]") { @@ -110,9 +110,8 @@ SCENARIO("RenderSystem", "[NDK][RenderSystem]") } } -void CompareAABB(const Nz::Rectf& aabb, const Nz::BoundingVolumef& boundingVolume) +void CompareAABB(const Nz::Rectf& aabb, const Nz::Boxf& box) { - Nz::Boxf box = boundingVolume.aabb; CHECK(aabb.x == Approx(box.x)); CHECK(aabb.y == Approx(box.y)); CHECK(aabb.width == Approx(box.width)); From 4c8e40bb6c6c065bea10d0f398b41fd3c09cee4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 5 Sep 2018 15:18:35 +0200 Subject: [PATCH 139/194] Math/Angle: Rename parameters to prevent name clash --- include/Nazara/Math/Angle.hpp | 18 +++++++++--------- include/Nazara/Math/Angle.inl | 34 +++++++++++++++++----------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index e1c904204..70fbbdd1b 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -22,9 +22,9 @@ namespace Nz { public: Angle() = default; - Angle(T Angle); - template> explicit Angle(const Angle& Angle) { Set(Angle); } - template> explicit Angle(const Angle& Angle) { Set(Angle); } + Angle(T value); + template> explicit Angle(const Angle& value) { Set(value); } + template> explicit Angle(const Angle& value) { Set(value); } template explicit Angle(const Angle& Angle); Angle(const Angle&) = default; ~Angle() = default; @@ -49,16 +49,16 @@ namespace Nz Angle& operator=(const Angle&) = default; - Angle operator+(const Angle& Angle) const; - Angle operator-(const Angle& Angle) const; + Angle operator+(const Angle& other) const; + Angle operator-(const Angle& other) const; - Angle& operator+=(const Angle& Angle); - Angle& operator-=(const Angle& Angle); + Angle& operator+=(const Angle& other); + Angle& operator-=(const Angle& other); Angle& operator*=(T scalar); Angle& operator/=(T divider); - bool operator==(const Angle& Angle) const; - bool operator!=(const Angle& Angle) const; + bool operator==(const Angle& other) const; + bool operator!=(const Angle& other) const; static Angle Zero(); diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index c22e99e2c..c9c26c04f 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -147,11 +147,11 @@ namespace Nz /*! * \brief Constructs an Angle object with an angle value * - * \param Angle value of the angle + * \param value value of the angle */ template - Angle::Angle(T Angle) : - angle(Angle) + Angle::Angle(T value) : + angle(value) { } @@ -323,10 +323,10 @@ namespace Nz * \brief Addition operator * \return Adds two angles together * - * \param angle Angle to add + * \param other Angle to add */ template - Angle Angle::operator+(const Angle& Angle) const + Angle Angle::operator+(const Angle& other) const { return Angle(angle + Angle.angle); } @@ -335,10 +335,10 @@ namespace Nz * \brief Subtraction operator * \return Subtracts two angles together * - * \param angle Angle to subtract + * \param other Angle to subtract */ template - Angle Angle::operator-(const Angle& Angle) const + Angle Angle::operator-(const Angle& other) const { return Angle(angle - Angle.angle); } @@ -347,10 +347,10 @@ namespace Nz * \brief Adds an angle by another * \return A reference to the angle * - * \param angle Angle to add + * \param other Angle to add */ template - Angle& Angle::operator+=(const Angle& Angle) + Angle& Angle::operator+=(const Angle& other) { angle += Angle.angle; return *this; @@ -360,10 +360,10 @@ namespace Nz * \brief Subtract an angle by another * \return A reference to the angle * - * \param angle Angle to subtract + * \param other Angle to subtract */ template - Angle& Angle::operator-=(const Angle& Angle) + Angle& Angle::operator-=(const Angle& other) { angle -= Angle.angle; return *this; @@ -399,24 +399,24 @@ namespace Nz * \brief Compares the angle to another for equality * \return True if both angles are equal * - * \param Angle The other angle to compare to + * \param other The other angle to compare to */ template - bool Angle::operator==(const Angle& Angle) const + bool Angle::operator==(const Angle& other) const { - return NumberEquals(angle, Angle.angle, Detail::AngleUtils::GetEpsilon()); + return NumberEquals(angle, other.angle, Detail::AngleUtils::GetEpsilon()); } /*! * \brief Compares the angle to another for inequality * \return True if both angles are equal * - * \param Angle The other angle to compare to + * \param other The other angle to compare to */ template - bool Angle::operator!=(const Angle& Angle) const + bool Angle::operator!=(const Angle& other) const { - return !NumberEquals(angle, Angle.angle, Detail::AngleUtils::GetEpsilon()); + return !NumberEquals(angle, other.angle, Detail::AngleUtils::GetEpsilon()); } /*! From 500ad417a7065a9f53a5cd6aefe7bbc7af47cb43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 5 Sep 2018 15:59:00 +0200 Subject: [PATCH 140/194] Math/Angle: Fix compilation under Linux --- include/Nazara/Math/Angle.hpp | 1 + include/Nazara/Math/Angle.inl | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index 70fbbdd1b..e177392fd 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index c9c26c04f..fd5658366 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -118,7 +118,7 @@ namespace Nz } template - void SinCos(std::enable_if_t::value, float> x, float* s, float* cos) + void SinCos(std::enable_if_t::value, float> x, float* s, float* c) { ::sincosf(x, s, c); } @@ -228,7 +228,7 @@ namespace Nz template void Angle::Normalize() { - constexpr T limit = Detail::AngleUtils::GetLimit(); + constexpr T limit = Detail::AngleUtils::template GetLimit(); constexpr T twoLimit = limit * T(2); angle = std::fmod(angle, twoLimit); @@ -404,7 +404,7 @@ namespace Nz template bool Angle::operator==(const Angle& other) const { - return NumberEquals(angle, other.angle, Detail::AngleUtils::GetEpsilon()); + return NumberEquals(angle, other.angle, Detail::AngleUtils::template GetEpsilon()); } /*! @@ -416,7 +416,7 @@ namespace Nz template bool Angle::operator!=(const Angle& other) const { - return !NumberEquals(angle, other.angle, Detail::AngleUtils::GetEpsilon()); + return !NumberEquals(angle, other.angle, Detail::AngleUtils::template GetEpsilon()); } /*! From 1114bb0fddba8f7871496242c2965106e3cb2216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Wed, 5 Sep 2018 16:24:10 +0200 Subject: [PATCH 141/194] Fix some other oopsies --- include/Nazara/Math/Angle.hpp | 4 ++-- include/Nazara/Math/Angle.inl | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index e177392fd..10525c56e 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -24,8 +24,8 @@ namespace Nz public: Angle() = default; Angle(T value); - template> explicit Angle(const Angle& value) { Set(value); } - template> explicit Angle(const Angle& value) { Set(value); } + template> explicit Angle(const Angle& value) { Set(value); } + template> explicit Angle(const Angle& value) { Set(value); } template explicit Angle(const Angle& Angle); Angle(const Angle&) = default; ~Angle() = default; diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index fd5658366..4cec7bb1a 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -328,7 +328,7 @@ namespace Nz template Angle Angle::operator+(const Angle& other) const { - return Angle(angle + Angle.angle); + return Angle(angle + other.angle); } /*! @@ -340,7 +340,7 @@ namespace Nz template Angle Angle::operator-(const Angle& other) const { - return Angle(angle - Angle.angle); + return Angle(angle - other.angle); } /*! @@ -352,7 +352,7 @@ namespace Nz template Angle& Angle::operator+=(const Angle& other) { - angle += Angle.angle; + angle += other.angle; return *this; } @@ -365,7 +365,7 @@ namespace Nz template Angle& Angle::operator-=(const Angle& other) { - angle -= Angle.angle; + angle -= other.angle; return *this; } From 1ee75f26991a17dfaefe8a0eb8a78bdb93359f63 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 5 Sep 2018 21:51:32 +0200 Subject: [PATCH 142/194] Math/Angle: Adds conversion to euler angles and quaternions --- include/Nazara/Math/Angle.hpp | 10 +++++ include/Nazara/Math/Angle.inl | 76 +++++++++++++++++++++++++++++++++++ tests/Engine/Math/Angle.cpp | 55 ++++++++++++++++++++----- 3 files changed, 132 insertions(+), 9 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index 10525c56e..28537473e 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -18,6 +18,9 @@ namespace Nz { struct SerializationContext; + template class EulerAngles; + template class Quaternion; + template class Angle { @@ -45,13 +48,20 @@ namespace Nz template Angle& Set(const Angle& Angle); Angle ToDegrees() const; + EulerAngles ToEulerAngles() const; + Quaternion ToQuaternion() const; Angle ToRadians() const; String ToString() const; + operator EulerAngles() const; + operator Quaternion() const; + Angle& operator=(const Angle&) = default; Angle operator+(const Angle& other) const; Angle operator-(const Angle& other) const; + Angle operator*(T scalar) const; + Angle operator/(T divider) const; Angle& operator+=(const Angle& other); Angle& operator-=(const Angle& other); diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index 4cec7bb1a..71d5631cc 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -319,6 +319,58 @@ namespace Nz return Detail::AngleUtils::ToString(angle); } + /*! + * \brief Shortcut allowing implicit conversion to Euler angles + * \return Euler Angles representing a 2D rotation by this angle + * + * \see ToEulerAngles + */ + template + Angle::operator EulerAngles() const + { + return ToEulerAngles(); + } + + /*! + * \brief Shortcut allowing implicit conversion to Quaternion + * \return Quaternion representing a 2D rotation by this angle + * + * \see ToQuaternion + */ + template + Angle::operator Quaternion() const + { + return ToQuaternion(); + } + + /*! + * \brief Converts the angle to an Euler Angles representation + * \return A 2D rotation expressed in Euler angles + * + * This will assume two-dimensional usage, and will set the angle value (as degrees) as the roll value of the Euler Angles, leaving pitch and yaw to zero + */ + template + EulerAngles Angle::ToEulerAngles() const + { + return EulerAngles(0, 0, ToDegrees().angle); + } + + /*! + * \brief Converts the angle to a Quaternion representation + * \return A 2D rotation expressed with Quaternion + * + * This will assume two-dimensional usage, as if the angle was first converted to Euler Angles and then to a Quaternion + * + * \see ToEulerAngles + */ + template + Quaternion Angle::ToQuaternion() const + { + auto halfAngle = Angle(*this) / 2.f; + auto sincos = halfAngle.GetSinCos(); + return Quaternion(sincos.second, 0, 0, sincos.first); + } + /*! * \brief Addition operator * \return Adds two angles together @@ -343,6 +395,30 @@ namespace Nz return Angle(angle - other.angle); } + /*! + * \brief Multiplication operator + * \return A copy of the angle, scaled by the multiplier + * + * \param scalar Multiplier + */ + template + Angle Angle::operator*(T scalar) const + { + return Angle(angle * scalar); + } + + /*! + * \brief Divides the angle by a scalar + * \return A copy of the angle, divided by the divider + * + * \param divider Divider + */ + template + Angle Angle::operator/(T divider) const + { + return Angle(angle / divider); + } + /*! * \brief Adds an angle by another * \return A reference to the angle diff --git a/tests/Engine/Math/Angle.cpp b/tests/Engine/Math/Angle.cpp index a4abc4a82..3b5346c06 100644 --- a/tests/Engine/Math/Angle.cpp +++ b/tests/Engine/Math/Angle.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include SCENARIO("Angle", "[MATH][ANGLE]") @@ -37,16 +39,33 @@ SCENARIO("Angle", "[MATH][ANGLE]") CHECK(angle.GetSin() == Approx(1.f).margin(0.0001f)); CHECK(angle.GetCos() == Approx(0.f).margin(0.0001f)); } - - } - AND_WHEN("We compute it at the same time") - { - auto sincos = angle.GetSinCos(); - - THEN("It should also be equal to 1 and 0") + AND_WHEN("We compute sin/cos at the same time") { - CHECK(sincos.first == Approx(1.f).margin(0.0001f)); - CHECK(sincos.second == Approx(0.f).margin(0.0001f)); + auto sincos = angle.GetSinCos(); + + THEN("It should also be equal to 1 and 0") + { + CHECK(sincos.first == Approx(1.f).margin(0.0001f)); + CHECK(sincos.second == Approx(0.f).margin(0.0001f)); + } + } + } + + WHEN("We get the Euler Angles representation of this angle") + { + Nz::EulerAnglesf eulerAngles = angle; + THEN("It should be equivalent to a 2D rotation by this angle") + { + CHECK(eulerAngles == Nz::EulerAnglesf(0.f, 0.f, 90.f)); + } + AND_WHEN("We get the Quaternion representation of this angle") + { + Nz::Quaternionf quat = angle; + + THEN("It should be equivalent to a 2D rotation by this angle") + { + CHECK(quat == eulerAngles.ToQuaternion()); + } } } } @@ -131,6 +150,24 @@ SCENARIO("Angle", "[MATH][ANGLE]") CHECK(sincos.second == Approx(-1.f).margin(0.0001f)); } } + + WHEN("We get the Euler Angles representation of this angle") + { + Nz::EulerAnglesf eulerAngles = angle; + THEN("It should be equivalent to a 2D rotation by this angle") + { + CHECK(eulerAngles == Nz::EulerAnglesf(0.f, 0.f, -180.f)); + } + AND_WHEN("We get the Quaternion representation of this angle") + { + Nz::Quaternionf quat = angle; + + THEN("It should be equivalent to a 2D rotation by this angle") + { + CHECK(quat == eulerAngles.ToQuaternion()); + } + } + } } GIVEN("A radian angle of 7pi") From 09c49f03fbcb348db05e9c5ab8ae243c152d26bd Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 5 Sep 2018 21:53:13 +0200 Subject: [PATCH 143/194] Math: Update global header --- include/Nazara/Math.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/Nazara/Math.hpp b/include/Nazara/Math.hpp index 9ee9a2351..e3d52540f 100644 --- a/include/Nazara/Math.hpp +++ b/include/Nazara/Math.hpp @@ -31,6 +31,7 @@ #define NAZARA_GLOBAL_MATH_HPP #include +#include #include #include #include From b631f3d3dad56e8d54a11010abbf8d623a6c1c97 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 5 Sep 2018 22:42:34 +0200 Subject: [PATCH 144/194] Fix some units test --- tests/Engine/Math/EulerAngles.cpp | 58 ++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/tests/Engine/Math/EulerAngles.cpp b/tests/Engine/Math/EulerAngles.cpp index 95a5e301a..01bfaecff 100644 --- a/tests/Engine/Math/EulerAngles.cpp +++ b/tests/Engine/Math/EulerAngles.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -26,8 +27,8 @@ SCENARIO("EulerAngles", "[MATH][EULERANGLES]") THEN("They should still be equal") { - REQUIRE(euler360 == firstZero); - REQUIRE(euler0 == secondZero); + CHECK(euler360 == firstZero); + CHECK(euler0 == secondZero); } } @@ -35,9 +36,9 @@ SCENARIO("EulerAngles", "[MATH][EULERANGLES]") { THEN("They are the same") { - REQUIRE(firstZero.ToQuaternion() == secondZero.ToQuaternion()); - REQUIRE(firstZero.ToQuaternion() == Nz::EulerAnglesf(Nz::Quaternionf(1.f, 0.f, 0.f, 0.f))); - REQUIRE(secondZero.ToQuaternion() == Nz::EulerAnglesf(Nz::Quaternionf(1.f, 0.f, 0.f, 0.f))); + CHECK(firstZero.ToQuaternion() == secondZero.ToQuaternion()); + CHECK(firstZero.ToQuaternion() == Nz::EulerAnglesf(Nz::Quaternionf(1.f, 0.f, 0.f, 0.f))); + CHECK(secondZero.ToQuaternion() == Nz::EulerAnglesf(Nz::Quaternionf(1.f, 0.f, 0.f, 0.f))); } } } @@ -56,9 +57,9 @@ SCENARIO("EulerAngles", "[MATH][EULERANGLES]") Nz::Vector3f rotation90Y = euler90Y.ToQuaternion() * Nz::Vector3f::UnitZ(); Nz::Vector3f rotation90R = euler90R.ToQuaternion() * Nz::Vector3f::UnitX(); - REQUIRE(rotation90P == Nz::Vector3f::UnitZ()); - REQUIRE(rotation90Y == Nz::Vector3f::UnitX()); - REQUIRE(rotation90R == Nz::Vector3f::UnitY()); + CHECK(rotation90P == Nz::Vector3f::UnitZ()); + CHECK(rotation90Y == Nz::Vector3f::UnitX()); + CHECK(rotation90R == Nz::Vector3f::UnitY()); } } } @@ -69,9 +70,9 @@ SCENARIO("EulerAngles", "[MATH][EULERANGLES]") { THEN("These results are expected") { - REQUIRE(Nz::EulerAngles(Nz::FromDegrees(45.f), 0.f, 0.f) == Nz::EulerAngles(Nz::Quaternionf(0.923879504204f, 0.382683455944f, 0.f, 0.f).ToEulerAngles())); - REQUIRE(Nz::EulerAngles(0.f, Nz::FromDegrees(45.f), 0.f) == Nz::EulerAngles(Nz::Quaternionf(0.923879504204f, 0.f, 0.382683455944f, 0.f).ToEulerAngles())); - REQUIRE(Nz::EulerAngles(0.f, 0.f, Nz::FromDegrees(45.f)) == Nz::EulerAngles(Nz::Quaternionf(0.923879504204f, 0.f, 0.f, 0.382683455944f).ToEulerAngles())); + CHECK(Nz::EulerAngles(Nz::FromDegrees(45.f), 0.f, 0.f) == Nz::EulerAngles(Nz::Quaternionf(0.923879504204f, 0.382683455944f, 0.f, 0.f).ToEulerAngles())); + CHECK(Nz::EulerAngles(0.f, Nz::FromDegrees(45.f), 0.f) == Nz::EulerAngles(Nz::Quaternionf(0.923879504204f, 0.f, 0.382683455944f, 0.f).ToEulerAngles())); + CHECK(Nz::EulerAngles(0.f, 0.f, Nz::FromDegrees(45.f)) == Nz::EulerAngles(Nz::Quaternionf(0.923879504204f, 0.f, 0.f, 0.382683455944f).ToEulerAngles())); } } } @@ -87,17 +88,34 @@ SCENARIO("EulerAngles", "[MATH][EULERANGLES]") THEN("And then convert to euler angles, we have identity") { Nz::EulerAnglesf tmp = Nz::Quaternionf(euler45.ToQuaternion()).ToEulerAngles(); - REQUIRE(tmp.pitch == Approx(0.f)); - REQUIRE(tmp.yaw == Approx(22.5f)); - REQUIRE(tmp.roll == Approx(22.5f)); + CHECK(tmp.pitch == Approx(0.f)); + CHECK(tmp.yaw == Approx(22.5f)); + CHECK(tmp.roll == Approx(22.5f)); + tmp = Nz::Quaternionf(euler90.ToQuaternion()).ToEulerAngles(); - REQUIRE(tmp.pitch == Approx(90.f)); - REQUIRE(tmp.yaw == Approx(90.f)); - REQUIRE(tmp.roll == Approx(0.f)); + CHECK(tmp.pitch == Approx(90.f)); + CHECK(tmp.yaw == Approx(90.f)); + CHECK(tmp.roll == Approx(0.f)); + tmp = Nz::Quaternionf(euler30.ToQuaternion()).ToEulerAngles(); - REQUIRE(tmp.pitch == Approx(30.f)); - REQUIRE(tmp.yaw == Approx(0.f).margin(0.0001f)); - REQUIRE(tmp.roll == Approx(30.f)); + CHECK(tmp.pitch == Approx(30.f)); + CHECK(tmp.yaw == Approx(0.f).margin(0.0001f)); + CHECK(tmp.roll == Approx(30.f)); + } + } + } + + GIVEN("An angle of 45 degrees") + { + Nz::DegreeAnglef angle(45.f); + + WHEN("We convert it to Euler angles") + { + Nz::EulerAnglesf eulerAngles(angle); + + THEN("It should be equal to a 2D rotation of 45 degrees") + { + CHECK(eulerAngles == Nz::EulerAnglesf(0.f, 0.f, 45.f)); } } } From 8bcb8756f938d2bdff09b82e3e1910946cb6962d Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 5 Sep 2018 22:42:39 +0200 Subject: [PATCH 145/194] Fill changelog --- ChangeLog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog.md b/ChangeLog.md index fb8d26b03..ae9f1cda3 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -144,6 +144,7 @@ Nazara Engine: - Fixed TcpClient::WaitForConnected possible failure (although connected) on Windows/Linux - CullingList now handles box tests - ⚠️ CullingList now handles full and partial visibility testing +- Added math class Angle, capable of handling both degrees and radians angles and converting them to euler angles/quaternions to improve 2D interface. Nazara Development Kit: - Added ImageWidget (#139) From 46008531e0078d3ca6c4e90c6d1242d2b03a6e8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 6 Sep 2018 13:24:29 +0200 Subject: [PATCH 146/194] Math/Angle: Fix implicit conversion to Euler Angles/Quaternion --- include/Nazara/Math/Angle.hpp | 3 --- include/Nazara/Math/Angle.inl | 24 ---------------------- include/Nazara/Math/EulerAngles.hpp | 3 +++ include/Nazara/Math/EulerAngles.inl | 31 +++++++++++++++++++++++++++-- include/Nazara/Math/Quaternion.hpp | 3 +++ include/Nazara/Math/Quaternion.inl | 30 ++++++++++++++++++++++++++-- 6 files changed, 63 insertions(+), 31 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index 28537473e..a64893e3a 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -53,9 +53,6 @@ namespace Nz Angle ToRadians() const; String ToString() const; - operator EulerAngles() const; - operator Quaternion() const; - Angle& operator=(const Angle&) = default; Angle operator+(const Angle& other) const; diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index 71d5631cc..a2a9f8c8e 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -319,30 +319,6 @@ namespace Nz return Detail::AngleUtils::ToString(angle); } - /*! - * \brief Shortcut allowing implicit conversion to Euler angles - * \return Euler Angles representing a 2D rotation by this angle - * - * \see ToEulerAngles - */ - template - Angle::operator EulerAngles() const - { - return ToEulerAngles(); - } - - /*! - * \brief Shortcut allowing implicit conversion to Quaternion - * \return Quaternion representing a 2D rotation by this angle - * - * \see ToQuaternion - */ - template - Angle::operator Quaternion() const - { - return ToQuaternion(); - } - /*! * \brief Converts the angle to an Euler Angles representation * \return A 2D rotation expressed in Euler angles diff --git a/include/Nazara/Math/EulerAngles.hpp b/include/Nazara/Math/EulerAngles.hpp index 126ea399e..0079d2f6a 100644 --- a/include/Nazara/Math/EulerAngles.hpp +++ b/include/Nazara/Math/EulerAngles.hpp @@ -8,6 +8,7 @@ #define NAZARA_EULERANGLES_HPP #include +#include #include #include @@ -22,6 +23,7 @@ namespace Nz EulerAngles() = default; EulerAngles(T P, T Y, T R); EulerAngles(const T angles[3]); + template EulerAngles(const Angle& angle); //EulerAngles(const Matrix3& mat); EulerAngles(const Quaternion& quat); template explicit EulerAngles(const EulerAngles& angles); @@ -34,6 +36,7 @@ namespace Nz EulerAngles& Set(T P, T Y, T R); EulerAngles& Set(const T angles[3]); + template EulerAngles& Set(const Angle& angles); EulerAngles& Set(const EulerAngles& angles); //EulerAngles& Set(const Matrix3& mat); EulerAngles& Set(const Quaternion& quat); diff --git a/include/Nazara/Math/EulerAngles.inl b/include/Nazara/Math/EulerAngles.inl index 2c35503ec..52c2e4b41 100644 --- a/include/Nazara/Math/EulerAngles.inl +++ b/include/Nazara/Math/EulerAngles.inl @@ -50,12 +50,23 @@ namespace Nz Set(angles); } + /*! + * \brief Constructs a EulerAngles object from an angle + * + * \param angle Angle representing a 2D rotation + */ + template + template + EulerAngles::EulerAngles(const Angle& angle) + { + Set(angle); + } + /*! * \brief Constructs a EulerAngles object from a quaternion * * \param quat Quaternion representing a rotation of space */ - template EulerAngles::EulerAngles(const Quaternion& quat) { @@ -142,13 +153,28 @@ namespace Nz return *this; } + + /*! + * \brief Sets the components of the euler angle from a 2D rotation specified by an Angle + * \return A reference to this euler angle + * + * \param angle 2D angle + * + * \see Angle + */ + template + template + EulerAngles& EulerAngles::Set(const Angle& angle) + { + return Set(angle.ToEulerAngles()); + } + /*! * \brief Sets the components of the euler angle from another euler angle * \return A reference to this euler angle * * \param angles The other euler angle */ - template EulerAngles& EulerAngles::Set(const EulerAngles& angles) { @@ -394,3 +420,4 @@ std::ostream& operator<<(std::ostream& out, const Nz::EulerAngles& angles) #undef F #include +#include "EulerAngles.hpp" diff --git a/include/Nazara/Math/Quaternion.hpp b/include/Nazara/Math/Quaternion.hpp index 17c9a8757..16e88b8ef 100644 --- a/include/Nazara/Math/Quaternion.hpp +++ b/include/Nazara/Math/Quaternion.hpp @@ -8,6 +8,7 @@ #define NAZARA_QUATERNION_HPP #include +#include namespace Nz { @@ -21,6 +22,7 @@ namespace Nz public: Quaternion() = default; Quaternion(T W, T X, T Y, T Z); + template Quaternion(const Angle& angle); Quaternion(const EulerAngles& angles); Quaternion(T angle, const Vector3& axis); Quaternion(const T quat[4]); @@ -49,6 +51,7 @@ namespace Nz Quaternion& Normalize(T* length = nullptr); Quaternion& Set(T W, T X, T Y, T Z); + template Quaternion& Set(const Angle& angle); Quaternion& Set(const EulerAngles& angles); Quaternion& Set(T angle, const Vector3& normalizedAxis); Quaternion& Set(const T quat[4]); diff --git a/include/Nazara/Math/Quaternion.inl b/include/Nazara/Math/Quaternion.inl index 59099f3b8..f253d7d6b 100644 --- a/include/Nazara/Math/Quaternion.inl +++ b/include/Nazara/Math/Quaternion.inl @@ -39,6 +39,18 @@ namespace Nz Set(W, X, Y, Z); } + /*! + * \brief Constructs a Quaternion object from an angle + * + * \param angle Angle representing a 2D rotation + */ + template + template + Quaternion::Quaternion(const Angle& angle) + { + Set(angle); + } + /*! * \brief Constructs a Quaternion object from a EulerAngles * @@ -46,7 +58,6 @@ namespace Nz * * \see EulerAngles */ - template Quaternion::Quaternion(const EulerAngles& angles) { @@ -343,6 +354,21 @@ namespace Nz return *this; } + /*! + * \brief Sets this quaternion from a 2D rotation specified by an Angle + * \return A reference to this quaternion + * + * \param angle 2D angle + * + * \see Angle + */ + template + template + Quaternion& Quaternion::Set(const Angle& angle) + { + return Set(angle.ToQuaternion()); + } + /*! * \brief Sets this quaternion from rotation specified by Euler angle * \return A reference to this quaternion @@ -351,7 +377,6 @@ namespace Nz * * \see EulerAngles */ - template Quaternion& Quaternion::Set(const EulerAngles& angles) { @@ -886,3 +911,4 @@ std::ostream& operator<<(std::ostream& out, const Nz::Quaternion& quat) #undef F #include +#include "Quaternion.hpp" From eaa3fd2f090447d7dc411f4b240adeaf380ccdaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Thu, 6 Sep 2018 13:27:06 +0200 Subject: [PATCH 147/194] Fix method order --- include/Nazara/Math/Angle.inl | 40 +++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index a2a9f8c8e..82f7c4dbe 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -299,26 +299,6 @@ namespace Nz return DegreeAngle(Detail::AngleUtils::ToDegrees(angle)); } - /*! - * \brief Returns the radian angle that is equivalent to this angle - * \return Equivalent radian angle - */ - template - Angle Angle::ToRadians() const - { - return RadianAngle(Detail::AngleUtils::ToRadians(angle)); - } - - /*! - * \brief Converts the angle to a string representation - * \return String representation of the angle - */ - template - String Angle::ToString() const - { - return Detail::AngleUtils::ToString(angle); - } - /*! * \brief Converts the angle to an Euler Angles representation * \return A 2D rotation expressed in Euler angles @@ -347,6 +327,26 @@ namespace Nz return Quaternion(sincos.second, 0, 0, sincos.first); } + /*! + * \brief Returns the radian angle that is equivalent to this angle + * \return Equivalent radian angle + */ + template + Angle Angle::ToRadians() const + { + return RadianAngle(Detail::AngleUtils::ToRadians(angle)); + } + + /*! + * \brief Converts the angle to a string representation + * \return String representation of the angle + */ + template + String Angle::ToString() const + { + return Detail::AngleUtils::ToString(angle); + } + /*! * \brief Addition operator * \return Adds two angles together From d0bea6d09a121e84c70cc862409c6f4aaa171b89 Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 6 Sep 2018 18:35:51 +0200 Subject: [PATCH 148/194] Update global headers --- include/Nazara/Core.hpp | 2 ++ include/Nazara/Physics2D.hpp | 1 + 2 files changed, 3 insertions(+) diff --git a/include/Nazara/Core.hpp b/include/Nazara/Core.hpp index 515d8c545..faab3b2f8 100644 --- a/include/Nazara/Core.hpp +++ b/include/Nazara/Core.hpp @@ -82,6 +82,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/include/Nazara/Physics2D.hpp b/include/Nazara/Physics2D.hpp index 074578140..1aa97796f 100644 --- a/include/Nazara/Physics2D.hpp +++ b/include/Nazara/Physics2D.hpp @@ -29,6 +29,7 @@ #ifndef NAZARA_GLOBAL_PHYSICS2D_HPP #define NAZARA_GLOBAL_PHYSICS2D_HPP +#include #include #include #include From b019fc4f6d2b0eeb14c147eb541988b645683958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 7 Sep 2018 13:26:14 +0200 Subject: [PATCH 149/194] Sdk/GraphicsComponent: Fix generated AABB --- SDK/src/NDK/Components/GraphicsComponent.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/SDK/src/NDK/Components/GraphicsComponent.cpp b/SDK/src/NDK/Components/GraphicsComponent.cpp index 6b2b2880a..fb4d6920b 100644 --- a/SDK/src/NDK/Components/GraphicsComponent.cpp +++ b/SDK/src/NDK/Components/GraphicsComponent.cpp @@ -297,17 +297,16 @@ namespace Ndk RenderSystem& renderSystem = m_entity->GetWorld()->GetSystem(); - m_aabb.MakeZero(); - for (std::size_t i = 0; i < m_renderables.size(); ++i) + m_aabb.Set(-1.f, -1.f, -1.f); + for (const Renderable& r : m_renderables) { - const Renderable& r = m_renderables[i]; r.boundingVolume = r.renderable->GetBoundingVolume(); r.data.transformMatrix = Nz::Matrix4f::ConcatenateAffine(renderSystem.GetCoordinateSystemMatrix(), Nz::Matrix4f::ConcatenateAffine(r.data.localMatrix, m_transformMatrix)); if (r.boundingVolume.IsFinite()) { r.boundingVolume.Update(r.data.transformMatrix); - if (i > 0) + if (m_aabb.IsValid()) m_aabb.ExtendTo(r.boundingVolume.aabb); else m_aabb.Set(r.boundingVolume.aabb); From 02383b1c0bfbc6ff92a02b7b221e7a0b3c0da36f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 7 Sep 2018 13:34:55 +0200 Subject: [PATCH 150/194] Sdk/GraphicsComponent: Invalidates culling when adding/removing renderables --- SDK/include/NDK/Components/GraphicsComponent.hpp | 1 + SDK/include/NDK/Components/GraphicsComponent.inl | 8 ++++++++ SDK/src/NDK/Components/GraphicsComponent.cpp | 7 +++---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/SDK/include/NDK/Components/GraphicsComponent.hpp b/SDK/include/NDK/Components/GraphicsComponent.hpp index cd2900d7f..83afc22f1 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.hpp +++ b/SDK/include/NDK/Components/GraphicsComponent.hpp @@ -74,6 +74,7 @@ namespace Ndk void ConnectInstancedRenderableSignals(Renderable& renderable); + inline void ForceCullingInvalidation(); inline void InvalidateAABB() const; void InvalidateRenderableData(const Nz::InstancedRenderable* renderable, Nz::UInt32 flags, std::size_t index); void InvalidateRenderableMaterial(const Nz::InstancedRenderable* renderable, std::size_t skinIndex, std::size_t matIndex, const Nz::MaterialRef& newMat); diff --git a/SDK/include/NDK/Components/GraphicsComponent.inl b/SDK/include/NDK/Components/GraphicsComponent.inl index 71adf64d4..f7cfb07ba 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -93,6 +93,8 @@ namespace Ndk UnregisterMaterial(renderable->GetMaterial(i)); m_renderables.erase(it); + + ForceCullingInvalidation(); break; } } @@ -255,6 +257,12 @@ namespace Ndk * \brief Invalidates the bounding volume */ + inline void GraphicsComponent::ForceCullingInvalidation() + { + for (CullingBoxEntry& entry : m_cullingBoxEntries) + entry.listEntry.ForceInvalidation(); //< Invalidate render queues + } + inline void GraphicsComponent::InvalidateAABB() const { m_boundingVolumesUpdated = false; diff --git a/SDK/src/NDK/Components/GraphicsComponent.cpp b/SDK/src/NDK/Components/GraphicsComponent.cpp index fb4d6920b..5182e2d2d 100644 --- a/SDK/src/NDK/Components/GraphicsComponent.cpp +++ b/SDK/src/NDK/Components/GraphicsComponent.cpp @@ -89,6 +89,7 @@ namespace Ndk RegisterMaterial(entry.renderable->GetMaterial(i)); InvalidateAABB(); + ForceCullingInvalidation(); } void GraphicsComponent::ConnectInstancedRenderableSignals(Renderable& entry) @@ -110,8 +111,7 @@ namespace Ndk r.dataUpdated = false; r.renderable->InvalidateData(&r.data, flags); - for (CullingBoxEntry& entry : m_cullingBoxEntries) - entry.listEntry.ForceInvalidation(); + ForceCullingInvalidation(); } void GraphicsComponent::InvalidateRenderableMaterial(const Nz::InstancedRenderable* renderable, std::size_t skinIndex, std::size_t matIndex, const Nz::MaterialRef& newMat) @@ -265,8 +265,7 @@ namespace Ndk InvalidateAABB(); InvalidateTransformMatrix(); - for (CullingBoxEntry& entry : m_cullingBoxEntries) - entry.listEntry.ForceInvalidation(); //< Force invalidation on movement + ForceCullingInvalidation(); //< Force invalidation on movement for now (FIXME) } void GraphicsComponent::UnregisterMaterial(Nz::Material* material) From ba59bc927f98536f3546fbd8af399ef15acf4c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 7 Sep 2018 13:48:27 +0200 Subject: [PATCH 151/194] AppVeyor: Switch from VS2015 to VS2017 --- ChangeLog.md | 1 + appveyor.yml | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index ae9f1cda3..23d2af364 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -18,6 +18,7 @@ Miscellaneous: - Replaced typedefs keywords with modern using keywords - When supported, projects are now parts of a virtual "workspace group" according to their kind - Fixed .dll copy when building Nazara occuring on Linux when targeting Windows (MinGW) +- ⚠ Appveyor nightlies are now compiled with VS2017 Nazara Engine: - VertexMapper:GetComponentPtr no longer throw an error if component is disabled or incompatible with template type, instead a null pointer is returned. diff --git a/appveyor.yml b/appveyor.yml index 8c53f2bd8..dcdf221ad 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -17,11 +17,11 @@ skip_commits: - NazaraModuleTemplate/* os: - - Visual Studio 2015 + - Visual Studio 2017 environment: matrix: - - TOOLSET: vs2015 + - TOOLSET: vs2017 install: - cd build && "./premake5.exe" %TOOLSET% && cd .. From dad8894d76cfe2ccdc4e6ba83310e4420cb52528 Mon Sep 17 00:00:00 2001 From: S6066 Date: Fri, 7 Sep 2018 17:27:33 +0200 Subject: [PATCH 152/194] Readme: Fix Appveyor Nightlies' link (#187) * [Readme] Fix Appveyor nightlies link * [Readme] Add link to debug binaries --- readme.md | 4 +++- readme_fr.md | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index b35253f90..b8dc10063 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,8 @@ Platform | Build Status | Nightlies ------------ | ------------- | ------------- -Windows | [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/rqxfj343mh3ab2we/branch/master?svg=true)](https://ci.appveyor.com/project/DrLynix/nazaraengine/branch/master) | MSVC14: [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32) [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) +Windows | [![AppVeyor Build +status](https://ci.appveyor.com/api/projects/status/rqxfj343mh3ab2we/branch/master?svg=true)](https://ci.appveyor.com/project/DrLynix/nazaraengine/branch/master) +| MSVC14: Debug [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20Win32), [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20x64) & Release [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32), [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) Linux | [![Travis CI Build Status](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine.svg?branch=master)](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine) | No # Nazara Engine diff --git a/readme_fr.md b/readme_fr.md index ef57f0448..135482c73 100644 --- a/readme_fr.md +++ b/readme_fr.md @@ -1,6 +1,8 @@ Platforme | Build Status | Nightlies ------------ | ------------- | ------------- -Windows | [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/rqxfj343mh3ab2we/branch/master?svg=true)](https://ci.appveyor.com/project/DrLynix/nazaraengine/branch/master) | MSVC14: [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32) [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2015%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) +Windows | [![AppVeyor Build +status](https://ci.appveyor.com/api/projects/status/rqxfj343mh3ab2we/branch/master?svg=true)](https://ci.appveyor.com/project/DrLynix/nazaraengine/branch/master) +| MSVC14: MSVC14: Debug [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20Win32), [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20x64) & Release [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32), [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) Linux | [![Travis CI Build Status](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine.svg?branch=master)](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine) | Non # Nazara Engine From 5f2cec313a30698f07ca934b18b75dbf79066ca4 Mon Sep 17 00:00:00 2001 From: S6066 Date: Fri, 7 Sep 2018 17:47:49 +0200 Subject: [PATCH 153/194] Fix readme's (#188) --- readme.md | 4 +--- readme_fr.md | 6 ++---- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/readme.md b/readme.md index b8dc10063..2eaabc09e 100644 --- a/readme.md +++ b/readme.md @@ -1,8 +1,6 @@ Platform | Build Status | Nightlies ------------ | ------------- | ------------- -Windows | [![AppVeyor Build -status](https://ci.appveyor.com/api/projects/status/rqxfj343mh3ab2we/branch/master?svg=true)](https://ci.appveyor.com/project/DrLynix/nazaraengine/branch/master) -| MSVC14: Debug [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20Win32), [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20x64) & Release [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32), [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) +Windows | [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/rqxfj343mh3ab2we/branch/master?svg=true)](https://ci.appveyor.com/project/DrLynix/nazaraengine/branch/master) | MSVC14.1:
**x86:** [Debug](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20Win32), [Release](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32)
**x86_64:** [Debug](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20x64), [Release](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) Linux | [![Travis CI Build Status](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine.svg?branch=master)](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine) | No # Nazara Engine diff --git a/readme_fr.md b/readme_fr.md index 135482c73..f0b7bf6c4 100644 --- a/readme_fr.md +++ b/readme_fr.md @@ -1,8 +1,6 @@ -Platforme | Build Status | Nightlies +Plateforme | Build Status | Nightlies ------------ | ------------- | ------------- -Windows | [![AppVeyor Build -status](https://ci.appveyor.com/api/projects/status/rqxfj343mh3ab2we/branch/master?svg=true)](https://ci.appveyor.com/project/DrLynix/nazaraengine/branch/master) -| MSVC14: MSVC14: Debug [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20Win32), [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20x64) & Release [x86](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32), [x86_64](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) +Windows | [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/rqxfj343mh3ab2we/branch/master?svg=true)](https://ci.appveyor.com/project/DrLynix/nazaraengine/branch/master) | MSVC14.1:
**x86:** [Debug](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20Win32), [Release](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20Win32)
**x86_64:** [Debug](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20DebugDynamic%3B%20Platform%3A%20x64), [Release](https://ci.appveyor.com/api/projects/DrLynix/NazaraEngine/artifacts/package%2FNazaraEngine.7z?branch=master&job=Environment%3A%20TOOLSET%3Dvs2017%3B%20Configuration%3A%20ReleaseDynamic%3B%20Platform%3A%20x64) Linux | [![Travis CI Build Status](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine.svg?branch=master)](https://travis-ci.org/DigitalPulseSoftware/NazaraEngine) | Non # Nazara Engine From 7c5b0df96cf86702d5587569c485ede4e3f0831c Mon Sep 17 00:00:00 2001 From: Faymoon Date: Sat, 8 Sep 2018 10:28:25 +0200 Subject: [PATCH 154/194] Make all component inherits of HandledObject (#185) * Update * Add: [Get/Set]AngularDaming for standardization * Fix: Name error * Add: [Get/Set][AngularDamping/MomentOfInertia] in PhysicsComponent2D * Forgot in last commit * Add: param coordSys in [PhysicsComponent2D/RigidBody2D]::SetMassCenter * Add: Some forgotten inline * Fix little error * Fix: Indentation before case * Move and Change GetCenterOfGravity * Rename m_world into m_physWorld * Rename GetWorld int GetPhysWorld * Update: PhysicsSystem2D became an interface of PhysWorld2D * Update Collison/PhysicsComponent because GetWorld was renamed * Update tests * Update: Make the interface usable with Entity instead of PhysicsComponent * Update: Make GetPhysWorld private * Update PhysicsSystem2D.hpp * Update: indent * Remove: useless blank line * update order(?) * Update PhysicsSystem2D.hpp * Add calls to GetPhysWorld to attempt a nullptr value * update include * little fix * add some missing inline * Fix * Make all component inherits of HandledObject * fix: compilation error * Add Handle alias for all Components * forgot in last commit --- SDK/include/NDK/Component.hpp | 2 +- SDK/include/NDK/Components/CameraComponent.hpp | 2 +- SDK/include/NDK/Components/CameraComponent.inl | 1 - SDK/include/NDK/Components/CollisionComponent2D.hpp | 4 ++++ SDK/include/NDK/Components/CollisionComponent3D.hpp | 4 ++++ SDK/include/NDK/Components/ConstraintComponent2D.hpp | 4 ++++ SDK/include/NDK/Components/DebugComponent.hpp | 4 ++++ SDK/include/NDK/Components/GraphicsComponent.hpp | 2 +- SDK/include/NDK/Components/GraphicsComponent.inl | 1 - SDK/include/NDK/Components/LightComponent.hpp | 6 +++++- SDK/include/NDK/Components/ListenerComponent.hpp | 4 ++++ SDK/include/NDK/Components/NodeComponent.hpp | 2 +- SDK/include/NDK/Components/ParticleEmitterComponent.hpp | 4 ++++ SDK/include/NDK/Components/ParticleGroupComponent.hpp | 4 ++-- SDK/include/NDK/Components/PhysicsComponent2D.hpp | 4 ++++ SDK/include/NDK/Components/PhysicsComponent3D.hpp | 4 ++++ SDK/include/NDK/Components/VelocityComponent.hpp | 2 +- 17 files changed, 44 insertions(+), 10 deletions(-) diff --git a/SDK/include/NDK/Component.hpp b/SDK/include/NDK/Component.hpp index a3bc1cac2..6b32c5fd2 100644 --- a/SDK/include/NDK/Component.hpp +++ b/SDK/include/NDK/Component.hpp @@ -12,7 +12,7 @@ namespace Ndk { template - class Component : public BaseComponent + class Component : public BaseComponent, public Nz::HandledObject { public: Component(); diff --git a/SDK/include/NDK/Components/CameraComponent.hpp b/SDK/include/NDK/Components/CameraComponent.hpp index e9a4de2da..92fab2e0e 100644 --- a/SDK/include/NDK/Components/CameraComponent.hpp +++ b/SDK/include/NDK/Components/CameraComponent.hpp @@ -22,7 +22,7 @@ namespace Ndk using CameraComponentHandle = Nz::ObjectHandle; - class NDK_API CameraComponent : public Component, public Nz::AbstractViewer, public Nz::HandledObject + class NDK_API CameraComponent : public Component, public Nz::AbstractViewer { public: inline CameraComponent(); diff --git a/SDK/include/NDK/Components/CameraComponent.inl b/SDK/include/NDK/Components/CameraComponent.inl index 4baad5225..df6d5a2b3 100644 --- a/SDK/include/NDK/Components/CameraComponent.inl +++ b/SDK/include/NDK/Components/CameraComponent.inl @@ -38,7 +38,6 @@ namespace Ndk inline CameraComponent::CameraComponent(const CameraComponent& camera) : Component(camera), AbstractViewer(camera), - HandledObject(camera), m_visibilityHash(camera.m_visibilityHash), m_projectionType(camera.m_projectionType), m_targetRegion(camera.m_targetRegion), diff --git a/SDK/include/NDK/Components/CollisionComponent2D.hpp b/SDK/include/NDK/Components/CollisionComponent2D.hpp index 6908c2bef..aecdc5197 100644 --- a/SDK/include/NDK/Components/CollisionComponent2D.hpp +++ b/SDK/include/NDK/Components/CollisionComponent2D.hpp @@ -14,6 +14,10 @@ namespace Ndk { + class CollisionComponent2D; + + using CollisionComponent2DHandle = Nz::ObjectHandle; + class NDK_API CollisionComponent2D : public Component { friend class PhysicsSystem2D; diff --git a/SDK/include/NDK/Components/CollisionComponent3D.hpp b/SDK/include/NDK/Components/CollisionComponent3D.hpp index 5c14f2c70..65e48576b 100644 --- a/SDK/include/NDK/Components/CollisionComponent3D.hpp +++ b/SDK/include/NDK/Components/CollisionComponent3D.hpp @@ -14,6 +14,10 @@ namespace Ndk { + class CollisionComponent3D; + + using CollisionComponent3DHandle = Nz::ObjectHandle; + class NDK_API CollisionComponent3D : public Component { friend class PhysicsSystem3D; diff --git a/SDK/include/NDK/Components/ConstraintComponent2D.hpp b/SDK/include/NDK/Components/ConstraintComponent2D.hpp index 8ad80e1de..23fcfe4c8 100644 --- a/SDK/include/NDK/Components/ConstraintComponent2D.hpp +++ b/SDK/include/NDK/Components/ConstraintComponent2D.hpp @@ -11,6 +11,10 @@ namespace Ndk { + class ConstraintComponent2D; + + using ConstraintComponent2DHandle = Nz::ObjectHandle; + class NDK_API ConstraintComponent2D : public Component { public: diff --git a/SDK/include/NDK/Components/DebugComponent.hpp b/SDK/include/NDK/Components/DebugComponent.hpp index 85e868b5a..206f85724 100644 --- a/SDK/include/NDK/Components/DebugComponent.hpp +++ b/SDK/include/NDK/Components/DebugComponent.hpp @@ -40,6 +40,10 @@ namespace Ndk constexpr DebugDrawFlags DebugDraw_None = 0; + class DebugComponent; + + using DebugComponentHandle = Nz::ObjectHandle; + class NDK_API DebugComponent : public Component { friend class DebugSystem; diff --git a/SDK/include/NDK/Components/GraphicsComponent.hpp b/SDK/include/NDK/Components/GraphicsComponent.hpp index 83afc22f1..e7780f3e0 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.hpp +++ b/SDK/include/NDK/Components/GraphicsComponent.hpp @@ -22,7 +22,7 @@ namespace Ndk using GraphicsComponentCullingList = Nz::CullingList; using GraphicsComponentHandle = Nz::ObjectHandle; - class NDK_API GraphicsComponent : public Component, public Nz::HandledObject + class NDK_API GraphicsComponent : public Component { friend class RenderSystem; diff --git a/SDK/include/NDK/Components/GraphicsComponent.inl b/SDK/include/NDK/Components/GraphicsComponent.inl index f7cfb07ba..37bbd1049 100644 --- a/SDK/include/NDK/Components/GraphicsComponent.inl +++ b/SDK/include/NDK/Components/GraphicsComponent.inl @@ -22,7 +22,6 @@ namespace Ndk */ inline GraphicsComponent::GraphicsComponent(const GraphicsComponent& graphicsComponent) : Component(graphicsComponent), - HandledObject(graphicsComponent), m_reflectiveMaterialCount(0), m_aabb(graphicsComponent.m_aabb), m_transformMatrix(graphicsComponent.m_transformMatrix), diff --git a/SDK/include/NDK/Components/LightComponent.hpp b/SDK/include/NDK/Components/LightComponent.hpp index fcf59f179..a7f72d0eb 100644 --- a/SDK/include/NDK/Components/LightComponent.hpp +++ b/SDK/include/NDK/Components/LightComponent.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2017 Jrme Leclercq +// Copyright (C) 2017 Jérôme Leclercq // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequisites.hpp @@ -13,6 +13,10 @@ namespace Ndk { + class LightComponent; + + using LightComponentHandle = Nz::ObjectHandle; + class NDK_API LightComponent : public Component, public Nz::Light { public: diff --git a/SDK/include/NDK/Components/ListenerComponent.hpp b/SDK/include/NDK/Components/ListenerComponent.hpp index 605f425a2..d5debdd36 100644 --- a/SDK/include/NDK/Components/ListenerComponent.hpp +++ b/SDK/include/NDK/Components/ListenerComponent.hpp @@ -12,6 +12,10 @@ namespace Ndk { + class ListenerComponent; + + using ListenerComponentHandle = Nz::ObjectHandle; + class NDK_API ListenerComponent : public Component { public: diff --git a/SDK/include/NDK/Components/NodeComponent.hpp b/SDK/include/NDK/Components/NodeComponent.hpp index 5661ab3ea..bccba1233 100644 --- a/SDK/include/NDK/Components/NodeComponent.hpp +++ b/SDK/include/NDK/Components/NodeComponent.hpp @@ -17,7 +17,7 @@ namespace Ndk using NodeComponentHandle = Nz::ObjectHandle; - class NDK_API NodeComponent : public Component, public Nz::Node, public Nz::HandledObject + class NDK_API NodeComponent : public Component, public Nz::Node { public: NodeComponent() = default; diff --git a/SDK/include/NDK/Components/ParticleEmitterComponent.hpp b/SDK/include/NDK/Components/ParticleEmitterComponent.hpp index f50229ef5..0c7497a3b 100644 --- a/SDK/include/NDK/Components/ParticleEmitterComponent.hpp +++ b/SDK/include/NDK/Components/ParticleEmitterComponent.hpp @@ -13,6 +13,10 @@ namespace Ndk { + class ParticleEmitterComponent; + + using ParticleEmitterComponentHandle = Nz::ObjectHandle; + class NDK_API ParticleEmitterComponent : public Component, public Nz::ParticleEmitter { public: diff --git a/SDK/include/NDK/Components/ParticleGroupComponent.hpp b/SDK/include/NDK/Components/ParticleGroupComponent.hpp index 981dbd11e..9415b8547 100644 --- a/SDK/include/NDK/Components/ParticleGroupComponent.hpp +++ b/SDK/include/NDK/Components/ParticleGroupComponent.hpp @@ -17,7 +17,7 @@ namespace Ndk using ParticleGroupComponentHandle = Nz::ObjectHandle; - class NDK_API ParticleGroupComponent : public Component, public Nz::ParticleGroup, public Nz::HandledObject + class NDK_API ParticleGroupComponent : public Component, public Nz::ParticleGroup { public: inline ParticleGroupComponent(unsigned int maxParticleCount, Nz::ParticleLayout layout); @@ -38,4 +38,4 @@ namespace Ndk #include #endif // NDK_COMPONENTS_PARTICLEGROUPCOMPONENT_HPP -#endif // NDK_SERVER \ No newline at end of file +#endif // NDK_SERVER diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.hpp b/SDK/include/NDK/Components/PhysicsComponent2D.hpp index c1a741153..74b6d630e 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.hpp +++ b/SDK/include/NDK/Components/PhysicsComponent2D.hpp @@ -13,6 +13,10 @@ namespace Ndk { + class PhysicsComponent2D; + + using PhysicsComponent2DHandle = Nz::ObjectHandle; + class NDK_API PhysicsComponent2D : public Component { friend class CollisionComponent2D; diff --git a/SDK/include/NDK/Components/PhysicsComponent3D.hpp b/SDK/include/NDK/Components/PhysicsComponent3D.hpp index d7c9ddd52..08cc64081 100644 --- a/SDK/include/NDK/Components/PhysicsComponent3D.hpp +++ b/SDK/include/NDK/Components/PhysicsComponent3D.hpp @@ -13,6 +13,10 @@ namespace Ndk { + class PhysicsComponent3D; + + using PhysicsComponent3DHandle = Nz::ObjectHandle; + class NDK_API PhysicsComponent3D : public Component { friend class CollisionComponent3D; diff --git a/SDK/include/NDK/Components/VelocityComponent.hpp b/SDK/include/NDK/Components/VelocityComponent.hpp index 6497fd61a..8785f6861 100644 --- a/SDK/include/NDK/Components/VelocityComponent.hpp +++ b/SDK/include/NDK/Components/VelocityComponent.hpp @@ -16,7 +16,7 @@ namespace Ndk using VelocityComponentHandle = Nz::ObjectHandle; - class NDK_API VelocityComponent : public Component, public Nz::HandledObject + class NDK_API VelocityComponent : public Component { public: VelocityComponent(const Nz::Vector3f& velocity = Nz::Vector3f::Zero()); From d99ae411c634f96b743cdf04416c39eea9217b7b Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 9 Sep 2018 13:56:29 +0200 Subject: [PATCH 155/194] Renderer/OpenGL: Fix glUniformMatrix4dv not being loaded --- src/Nazara/Renderer/OpenGL.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Nazara/Renderer/OpenGL.cpp b/src/Nazara/Renderer/OpenGL.cpp index 0d6f07d2e..1c6ac00dd 100644 --- a/src/Nazara/Renderer/OpenGL.cpp +++ b/src/Nazara/Renderer/OpenGL.cpp @@ -1112,6 +1112,7 @@ namespace Nz glUniform2dv = reinterpret_cast(LoadEntry("glUniform2dv")); glUniform3dv = reinterpret_cast(LoadEntry("glUniform3dv")); glUniform4dv = reinterpret_cast(LoadEntry("glUniform4dv")); + glUniformMatrix4dv = reinterpret_cast(LoadEntry("glUniformMatrix4dv")); s_openGLextensions[OpenGLExtension_FP64] = true; } From 53aa9ea1709523b87a35e3583059f58be9248d8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 11 Sep 2018 21:03:44 +0200 Subject: [PATCH 156/194] Layouts (#189) * Layout WIP * Widgets/BoxLayout: Fix layout algorithm * Widgets/BoxLayout: Fix box layout algorithm for good * SDK/Widgets: Remove padding * Sdk/Widgets: Make use of minimum/preferred size * Sdk/TextAreaWidget: Add Minimum/PreferredSize to TextArea * Sdk/Widgets: Add height/width variants of get/set fixed, maximum, minimum and preferred size methods * Sdk/BoxLayout: Remove useless code * Sdk/TextAreaWidget: Fix compilation * Widgets/TextAreaWidget: Fix cursor position --- SDK/include/NDK/BaseWidget.hpp | 60 ++++--- SDK/include/NDK/BaseWidget.inl | 158 +++++++++++++++--- SDK/include/NDK/Canvas.hpp | 2 - SDK/include/NDK/Canvas.inl | 3 - SDK/include/NDK/Widgets/BoxLayout.hpp | 48 ++++++ SDK/include/NDK/Widgets/BoxLayout.inl | 15 ++ SDK/include/NDK/Widgets/ButtonWidget.hpp | 4 - SDK/include/NDK/Widgets/ButtonWidget.inl | 4 + SDK/include/NDK/Widgets/CheckboxWidget.hpp | 2 +- SDK/include/NDK/Widgets/CheckboxWidget.inl | 3 + SDK/include/NDK/Widgets/Enums.hpp | 6 + SDK/include/NDK/Widgets/ImageWidget.hpp | 4 +- SDK/include/NDK/Widgets/ImageWidget.inl | 7 +- SDK/include/NDK/Widgets/LabelWidget.hpp | 4 - SDK/include/NDK/Widgets/LabelWidget.inl | 3 + SDK/include/NDK/Widgets/ProgressBarWidget.hpp | 2 - SDK/include/NDK/Widgets/ProgressBarWidget.inl | 7 +- SDK/include/NDK/Widgets/TextAreaWidget.hpp | 10 +- SDK/include/NDK/Widgets/TextAreaWidget.inl | 9 +- SDK/src/NDK/BaseWidget.cpp | 35 ++-- SDK/src/NDK/Canvas.cpp | 4 - SDK/src/NDK/Widgets/BoxLayout.cpp | 122 ++++++++++++++ SDK/src/NDK/Widgets/ButtonWidget.cpp | 17 +- SDK/src/NDK/Widgets/CheckboxWidget.cpp | 29 ++-- SDK/src/NDK/Widgets/ImageWidget.cpp | 13 +- SDK/src/NDK/Widgets/LabelWidget.cpp | 9 +- SDK/src/NDK/Widgets/ProgressBarWidget.cpp | 10 +- SDK/src/NDK/Widgets/TextAreaWidget.cpp | 41 +++-- build/scripts/tools/ndk_server.lua | 1 + 29 files changed, 470 insertions(+), 162 deletions(-) create mode 100644 SDK/include/NDK/Widgets/BoxLayout.hpp create mode 100644 SDK/include/NDK/Widgets/BoxLayout.inl create mode 100644 SDK/src/NDK/Widgets/BoxLayout.cpp diff --git a/SDK/include/NDK/BaseWidget.hpp b/SDK/include/NDK/BaseWidget.hpp index 12ab85cd1..26c7f5539 100644 --- a/SDK/include/NDK/BaseWidget.hpp +++ b/SDK/include/NDK/BaseWidget.hpp @@ -46,44 +46,61 @@ namespace Ndk void EnableBackground(bool enable); + template void ForEachWidgetChild(F iterator); + template void ForEachWidgetChild(F iterator) const; + //virtual BaseWidget* Clone() const = 0; inline const Nz::Color& GetBackgroundColor() const; inline Canvas* GetCanvas(); inline Nz::SystemCursor GetCursor() const; - inline const Padding& GetPadding() const; - inline Nz::Vector2f GetContentOrigin() const; - inline const Nz::Vector2f& GetContentSize() const; + inline float GetHeight() const; + + inline float GetMaximumHeight() const; + inline Nz::Vector2f GetMaximumSize() const; + inline float GetMaximumWidth() const; + + inline float GetMinimumHeight() const; + inline Nz::Vector2f GetMinimumSize() const; + inline float GetMinimumWidth() const; + + inline float GetPreferredHeight() const; + inline Nz::Vector2f GetPreferredSize() const; + inline float GetPreferredWidth() const; + inline Nz::Vector2f GetSize() const; + inline float GetWidth() const; + inline std::size_t GetWidgetChildCount() const; bool HasFocus() const; inline bool IsVisible() const; - virtual void ResizeToContent() = 0; + void Resize(const Nz::Vector2f& size); void SetBackgroundColor(const Nz::Color& color); void SetCursor(Nz::SystemCursor systemCursor); - inline void SetContentSize(const Nz::Vector2f& size); void SetFocus(); - inline void SetPadding(float left, float top, float right, float bottom); - void SetSize(const Nz::Vector2f& size); + + inline void SetFixedHeight(float fixedHeight); + inline void SetFixedSize(const Nz::Vector2f& fixedSize); + inline void SetFixedWidth(float fixedWidth); + + inline void SetMaximumHeight(float maximumHeight); + inline void SetMaximumSize(const Nz::Vector2f& maximumSize); + inline void SetMaximumWidth(float maximumWidth); + + inline void SetMinimumHeight(float minimumHeight); + inline void SetMinimumSize(const Nz::Vector2f& minimumSize); + inline void SetMinimumWidth(float minimumWidth); void Show(bool show = true); BaseWidget& operator=(const BaseWidget&) = delete; BaseWidget& operator=(BaseWidget&&) = delete; - struct Padding - { - float left; - float top; - float right; - float bottom; - }; - protected: - const EntityHandle& CreateEntity(bool isContentEntity); + const EntityHandle& CreateEntity(); void DestroyEntity(Entity* entity); virtual void Layout(); @@ -102,10 +119,12 @@ namespace Ndk virtual void OnParentResized(const Nz::Vector2f& newSize); virtual void OnTextEntered(char32_t character, bool repeated); + inline void SetPreferredSize(const Nz::Vector2f& preferredSize); + private: inline BaseWidget(); - inline void DestroyChild(BaseWidget* widget); + void DestroyChild(BaseWidget* widget); void DestroyChildren(); inline bool IsRegisteredToCanvas() const; inline void NotifyParentResized(const Nz::Vector2f& newSize); @@ -117,7 +136,6 @@ namespace Ndk struct WidgetEntity { EntityOwner handle; - bool isContent; }; static constexpr std::size_t InvalidCanvasIndex = std::numeric_limits::max(); @@ -127,12 +145,14 @@ namespace Ndk std::vector> m_children; Canvas* m_canvas; EntityOwner m_backgroundEntity; - Padding m_padding; WorldHandle m_world; Nz::Color m_backgroundColor; Nz::SpriteRef m_backgroundSprite; Nz::SystemCursor m_cursor; - Nz::Vector2f m_contentSize; + Nz::Vector2f m_maximumSize; + Nz::Vector2f m_minimumSize; + Nz::Vector2f m_preferredSize; + Nz::Vector2f m_size; BaseWidget* m_widgetParent; bool m_visible; }; diff --git a/SDK/include/NDK/BaseWidget.inl b/SDK/include/NDK/BaseWidget.inl index 6c7a0a3dd..e24b89285 100644 --- a/SDK/include/NDK/BaseWidget.inl +++ b/SDK/include/NDK/BaseWidget.inl @@ -13,11 +13,13 @@ namespace Ndk m_canvas(nullptr), m_backgroundColor(Nz::Color(230, 230, 230, 255)), m_cursor(Nz::SystemCursor_Default), - m_contentSize(50.f, 50.f), + m_size(50.f, 50.f), + m_maximumSize(std::numeric_limits::infinity()), + m_minimumSize(0.f), + m_preferredSize(-1), m_widgetParent(nullptr), m_visible(true) { - SetPadding(5.f, 5.f, 5.f, 5.f); } template @@ -64,6 +66,20 @@ namespace Ndk SetPosition(GetPosition(Nz::CoordSys_Local).x, (parentSize.y - mySize.y) / 2.f); } + template + inline void BaseWidget::ForEachWidgetChild(F iterator) + { + for (const auto& child : m_children) + iterator(child.get()); + } + + template + inline void BaseWidget::ForEachWidgetChild(F iterator) const + { + for (const auto& child : m_children) + iterator(static_cast(child.get())); + } + inline const Nz::Color& BaseWidget::GetBackgroundColor() const { return m_backgroundColor; @@ -79,24 +95,69 @@ namespace Ndk return m_cursor; } - inline const BaseWidget::Padding& BaseWidget::GetPadding() const + inline float BaseWidget::GetHeight() const { - return m_padding; + return m_size.y; } - inline Nz::Vector2f BaseWidget::GetContentOrigin() const + inline float BaseWidget::GetMaximumHeight() const { - return { m_padding.left, m_padding.top }; + return m_maximumSize.y; } - inline const Nz::Vector2f& BaseWidget::GetContentSize() const + inline Nz::Vector2f BaseWidget::GetMaximumSize() const { - return m_contentSize; + return m_maximumSize; + } + + inline float BaseWidget::GetMaximumWidth() const + { + return m_maximumSize.x; + } + + inline float BaseWidget::GetMinimumHeight() const + { + return m_minimumSize.y; + } + + inline Nz::Vector2f BaseWidget::GetMinimumSize() const + { + return m_minimumSize; + } + + inline float BaseWidget::GetMinimumWidth() const + { + return m_minimumSize.x; + } + + inline float BaseWidget::GetPreferredHeight() const + { + return m_preferredSize.y; + } + + inline Nz::Vector2f BaseWidget::GetPreferredSize() const + { + return m_preferredSize; + } + + inline float BaseWidget::GetPreferredWidth() const + { + return m_preferredSize.x; } inline Nz::Vector2f BaseWidget::GetSize() const { - return Nz::Vector2f(m_contentSize.x + m_padding.left + m_padding.right, m_contentSize.y + m_padding.top + m_padding.bottom); + return Nz::Vector2f(GetWidth(), GetHeight()); + } + + inline float BaseWidget::GetWidth() const + { + return m_size.x; + } + + inline std::size_t BaseWidget::GetWidgetChildCount() const + { + return m_children.size(); } inline bool BaseWidget::IsVisible() const @@ -104,22 +165,79 @@ namespace Ndk return m_visible; } - inline void BaseWidget::SetContentSize(const Nz::Vector2f& size) + inline void BaseWidget::SetFixedHeight(float fixedHeight) { - NotifyParentResized(size); - m_contentSize = size; - - Layout(); + SetMaximumHeight(fixedHeight); + SetMinimumHeight(fixedHeight); } - inline void BaseWidget::SetPadding(float left, float top, float right, float bottom) + inline void BaseWidget::SetFixedSize(const Nz::Vector2f& fixedSize) { - m_padding.left = left; - m_padding.top = top; - m_padding.bottom = bottom; - m_padding.right = right; + SetMaximumSize(fixedSize); + SetMinimumSize(fixedSize); + } - Layout(); + inline void BaseWidget::SetFixedWidth(float fixedWidth) + { + SetMaximumWidth(fixedWidth); + SetMinimumWidth(fixedWidth); + } + + inline void BaseWidget::SetMaximumHeight(float maximumHeight) + { + Nz::Vector2f maximumSize = GetMaximumSize(); + maximumSize.y = maximumHeight; + + SetMaximumSize(maximumSize); + } + + inline void BaseWidget::SetMaximumSize(const Nz::Vector2f& maximumSize) + { + m_maximumSize = maximumSize; + + Nz::Vector2f size = GetSize(); + if (size.x > m_maximumSize.x || size.y > m_maximumSize.y) + Resize(size); //< Will clamp automatically + } + + inline void BaseWidget::SetMaximumWidth(float maximumWidth) + { + Nz::Vector2f maximumSize = GetMaximumSize(); + maximumSize.x = maximumWidth; + + SetMaximumSize(maximumSize); + } + + inline void BaseWidget::SetMinimumHeight(float minimumHeight) + { + Nz::Vector2f minimumSize = GetMinimumSize(); + minimumSize.y = minimumHeight; + + SetMinimumSize(minimumSize); + } + + inline void BaseWidget::SetMinimumSize(const Nz::Vector2f& minimumSize) + { + m_minimumSize = minimumSize; + + Nz::Vector2f size = GetSize(); + if (size.x < m_minimumSize.x || size.y < m_minimumSize.y) + Resize(size); //< Will clamp automatically + } + + inline void BaseWidget::SetMinimumWidth(float minimumWidth) + { + Nz::Vector2f minimumSize = GetMinimumSize(); + minimumSize.x = minimumWidth; + + SetMinimumSize(minimumSize); + } + + inline void BaseWidget::SetPreferredSize(const Nz::Vector2f& preferredSize) + { + m_preferredSize = preferredSize; + + Resize(m_preferredSize); } inline bool BaseWidget::IsRegisteredToCanvas() const diff --git a/SDK/include/NDK/Canvas.hpp b/SDK/include/NDK/Canvas.hpp index f99900d30..d563c6cd3 100644 --- a/SDK/include/NDK/Canvas.hpp +++ b/SDK/include/NDK/Canvas.hpp @@ -28,8 +28,6 @@ namespace Ndk inline const WorldHandle& GetWorld() const; - void ResizeToContent() override; - Canvas& operator=(const Canvas&) = delete; Canvas& operator=(Canvas&&) = delete; diff --git a/SDK/include/NDK/Canvas.inl b/SDK/include/NDK/Canvas.inl index 7ac84a45d..7a602cffb 100644 --- a/SDK/include/NDK/Canvas.inl +++ b/SDK/include/NDK/Canvas.inl @@ -27,9 +27,6 @@ namespace Ndk m_mouseMovedSlot.Connect(eventHandler.OnMouseMoved, this, &Canvas::OnEventMouseMoved); m_mouseLeftSlot.Connect(eventHandler.OnMouseLeft, this, &Canvas::OnEventMouseLeft); m_textEnteredSlot.Connect(eventHandler.OnTextEntered, this, &Canvas::OnEventTextEntered); - - // Disable padding by default - SetPadding(0.f, 0.f, 0.f, 0.f); } inline Canvas::~Canvas() diff --git a/SDK/include/NDK/Widgets/BoxLayout.hpp b/SDK/include/NDK/Widgets/BoxLayout.hpp new file mode 100644 index 000000000..d27616814 --- /dev/null +++ b/SDK/include/NDK/Widgets/BoxLayout.hpp @@ -0,0 +1,48 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Development Kit" +// For conditions of distribution and use, see copyright notice in Prerequisites.hpp + +#pragma once + +#ifndef NDK_WIDGETS_BOXLAYOUT_HPP +#define NDK_WIDGETS_BOXLAYOUT_HPP + +#include +#include +#include +#include + +namespace Ndk +{ + class NDK_API BoxLayout : public BaseWidget + { + public: + inline BoxLayout(BaseWidget* parent, BoxLayoutOrientation orientation); + BoxLayout(const BoxLayout&) = delete; + BoxLayout(BoxLayout&&) = default; + ~BoxLayout() = default; + + void Layout() override; + + BoxLayout& operator=(const BoxLayout&) = delete; + BoxLayout& operator=(BoxLayout&&) = default; + + private: + struct ChildInfo + { + BaseWidget* widget; + bool isConstrained; + float maximumSize; + float minimumSize; + float size; + }; + + std::vector m_childInfos; + BoxLayoutOrientation m_orientation; + float m_spacing; + }; +} + +#include + +#endif // NDK_WIDGETS_BOXLAYOUT_HPP diff --git a/SDK/include/NDK/Widgets/BoxLayout.inl b/SDK/include/NDK/Widgets/BoxLayout.inl new file mode 100644 index 000000000..72dfaaf5f --- /dev/null +++ b/SDK/include/NDK/Widgets/BoxLayout.inl @@ -0,0 +1,15 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Development Kit" +// For conditions of distribution and use, see copyright notice in Prerequisites.hpp + +#include + +namespace Ndk +{ + BoxLayout::BoxLayout(BaseWidget* parent, BoxLayoutOrientation orientation) : + BaseWidget(parent), + m_orientation(orientation), + m_spacing(5.f) + { + } +} diff --git a/SDK/include/NDK/Widgets/ButtonWidget.hpp b/SDK/include/NDK/Widgets/ButtonWidget.hpp index 01eb4a90a..a65429290 100644 --- a/SDK/include/NDK/Widgets/ButtonWidget.hpp +++ b/SDK/include/NDK/Widgets/ButtonWidget.hpp @@ -28,10 +28,6 @@ namespace Ndk ButtonWidget(ButtonWidget&&) = default; ~ButtonWidget() = default; - //virtual ButtonWidget* Clone() const = 0; - - void ResizeToContent() override; - inline const Nz::Color& GetColor() const; inline const Nz::Color& GetCornerColor() const; inline const Nz::Color& GetHoverColor() const; diff --git a/SDK/include/NDK/Widgets/ButtonWidget.inl b/SDK/include/NDK/Widgets/ButtonWidget.inl index 757b33ab2..11cf202cf 100644 --- a/SDK/include/NDK/Widgets/ButtonWidget.inl +++ b/SDK/include/NDK/Widgets/ButtonWidget.inl @@ -93,6 +93,10 @@ namespace Ndk { m_textSprite->Update(drawer); + Nz::Vector2f textSize = Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths()); + SetMinimumSize(textSize); + SetPreferredSize(textSize + Nz::Vector2f(20.f, 10.f)); + Layout(); } } diff --git a/SDK/include/NDK/Widgets/CheckboxWidget.hpp b/SDK/include/NDK/Widgets/CheckboxWidget.hpp index d8382ba02..a9723c20b 100644 --- a/SDK/include/NDK/Widgets/CheckboxWidget.hpp +++ b/SDK/include/NDK/Widgets/CheckboxWidget.hpp @@ -53,7 +53,6 @@ namespace Ndk void SetState(CheckboxState state); inline void SetTextMargin(float margin); - void ResizeToContent() override; inline void UpdateText(const Nz::AbstractTextDrawer& drawer); @@ -68,6 +67,7 @@ namespace Ndk void Layout() override; void UpdateCheckbox(); + void UpdateSize(); void OnMouseButtonRelease(int x, int y, Nz::Mouse::Button button) override; inline bool ContainsCheckbox(int x, int y) const; diff --git a/SDK/include/NDK/Widgets/CheckboxWidget.inl b/SDK/include/NDK/Widgets/CheckboxWidget.inl index 3b4823fde..5fa9e30ed 100644 --- a/SDK/include/NDK/Widgets/CheckboxWidget.inl +++ b/SDK/include/NDK/Widgets/CheckboxWidget.inl @@ -65,6 +65,7 @@ namespace Ndk m_checkboxBackgroundSprite->SetSize(size - GetCheckboxBorderSize() * 2.f); m_checkboxContentSprite->SetSize(GetCheckboxSize() - GetCheckboxBorderSize() * 2.f - Nz::Vector2f { 4.f, 4.f }); + UpdateSize(); Layout(); } @@ -77,6 +78,8 @@ namespace Ndk inline void CheckboxWidget::UpdateText(const Nz::AbstractTextDrawer& drawer) { m_textSprite->Update(drawer); + + UpdateSize(); Layout(); } diff --git a/SDK/include/NDK/Widgets/Enums.hpp b/SDK/include/NDK/Widgets/Enums.hpp index 111ee43db..a11511694 100644 --- a/SDK/include/NDK/Widgets/Enums.hpp +++ b/SDK/include/NDK/Widgets/Enums.hpp @@ -9,6 +9,12 @@ namespace Ndk { + enum BoxLayoutOrientation + { + BoxLayoutOrientation_Horizontal, + BoxLayoutOrientation_Vertical + }; + enum CheckboxState { CheckboxState_Checked, diff --git a/SDK/include/NDK/Widgets/ImageWidget.hpp b/SDK/include/NDK/Widgets/ImageWidget.hpp index 93169c80d..fc36ca298 100644 --- a/SDK/include/NDK/Widgets/ImageWidget.hpp +++ b/SDK/include/NDK/Widgets/ImageWidget.hpp @@ -26,14 +26,14 @@ namespace Ndk //virtual ImageWidget* Clone() const = 0; - void ResizeToContent() override; + void ResizeToContent(); inline const Nz::Color& GetColor() const; inline const Nz::TextureRef& GetTexture() const; inline const Nz::Rectf& GetTextureCoords() const; inline void SetColor(const Nz::Color& color); - inline void SetTexture(const Nz::TextureRef& texture, bool resizeToContent = true); + inline void SetTexture(const Nz::TextureRef& texture); inline void SetTextureCoords(const Nz::Rectf& coords); inline void SetTextureRect(const Nz::Rectui& rect); diff --git a/SDK/include/NDK/Widgets/ImageWidget.inl b/SDK/include/NDK/Widgets/ImageWidget.inl index 1ba13d525..b1835941b 100644 --- a/SDK/include/NDK/Widgets/ImageWidget.inl +++ b/SDK/include/NDK/Widgets/ImageWidget.inl @@ -26,12 +26,13 @@ namespace Ndk m_sprite->SetColor(color); } - inline void ImageWidget::SetTexture(const Nz::TextureRef& texture, bool resizeToContent) + inline void ImageWidget::SetTexture(const Nz::TextureRef& texture) { m_sprite->SetTexture(texture, false); - if (resizeToContent) - ResizeToContent(); + Nz::Vector2f textureSize = Nz::Vector2f(Nz::Vector2ui(m_sprite->GetMaterial()->GetDiffuseMap()->GetSize())); + SetMinimumSize(textureSize); + SetPreferredSize(textureSize); } inline void ImageWidget::SetTextureCoords(const Nz::Rectf& coords) diff --git a/SDK/include/NDK/Widgets/LabelWidget.hpp b/SDK/include/NDK/Widgets/LabelWidget.hpp index f96960e15..aea711010 100644 --- a/SDK/include/NDK/Widgets/LabelWidget.hpp +++ b/SDK/include/NDK/Widgets/LabelWidget.hpp @@ -26,10 +26,6 @@ namespace Ndk LabelWidget(LabelWidget&&) = default; ~LabelWidget() = default; - //virtual LabelWidget* Clone() const = 0; - - void ResizeToContent() override; - inline void UpdateText(const Nz::AbstractTextDrawer& drawer); LabelWidget& operator=(const LabelWidget&) = delete; diff --git a/SDK/include/NDK/Widgets/LabelWidget.inl b/SDK/include/NDK/Widgets/LabelWidget.inl index 72d0ad1a6..db3d10a52 100644 --- a/SDK/include/NDK/Widgets/LabelWidget.inl +++ b/SDK/include/NDK/Widgets/LabelWidget.inl @@ -9,5 +9,8 @@ namespace Ndk inline void LabelWidget::UpdateText(const Nz::AbstractTextDrawer& drawer) { m_textSprite->Update(drawer); + + SetMinimumSize(Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths())); + SetPreferredSize(Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths())); } } diff --git a/SDK/include/NDK/Widgets/ProgressBarWidget.hpp b/SDK/include/NDK/Widgets/ProgressBarWidget.hpp index 6e19aa0cd..2ae334b8c 100644 --- a/SDK/include/NDK/Widgets/ProgressBarWidget.hpp +++ b/SDK/include/NDK/Widgets/ProgressBarWidget.hpp @@ -67,8 +67,6 @@ namespace Ndk inline void SetTextMargin(float margin); inline void SetTextColor(const Nz::Color& color); - inline void ResizeToContent() override {} - NazaraSignal(OnValueChanged, const ProgressBarWidget* /*progressBar*/); private: diff --git a/SDK/include/NDK/Widgets/ProgressBarWidget.inl b/SDK/include/NDK/Widgets/ProgressBarWidget.inl index a90641203..9fe2c8382 100644 --- a/SDK/include/NDK/Widgets/ProgressBarWidget.inl +++ b/SDK/include/NDK/Widgets/ProgressBarWidget.inl @@ -1,4 +1,4 @@ -// Copyright (C) 2017 Samy Bensaid +// Copyright (C) 2017 Samy Bensaid // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequisites.hpp @@ -148,9 +148,8 @@ namespace Ndk { if (IsTextEnabled()) { - Nz::Vector2f size = GetContentSize(); - m_textSprite->Update(Nz::SimpleTextDrawer::Draw(Nz::String::Number(m_value).Append('%'), - static_cast(std::min(size.x, size.y) / 2.f), 0u, m_textColor)); + Nz::Vector2f size = GetSize(); + m_textSprite->Update(Nz::SimpleTextDrawer::Draw(Nz::String::Number(m_value).Append('%'), static_cast(std::min(size.x, size.y) / 2.f), 0u, m_textColor)); } } } diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.hpp b/SDK/include/NDK/Widgets/TextAreaWidget.hpp index f57e7a049..9a5d33335 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.hpp +++ b/SDK/include/NDK/Widgets/TextAreaWidget.hpp @@ -11,8 +11,8 @@ #include #include #include -#include #include +#include namespace Ndk { @@ -40,7 +40,7 @@ namespace Ndk void Erase(std::size_t firstGlyph, std::size_t lastGlyph); void EraseSelection(); - inline CharacterFilter GetCharacterFilter() const; + inline const CharacterFilter& GetCharacterFilter() const; inline unsigned int GetCharacterSize() const; inline const Nz::Vector2ui& GetCursorPosition() const; inline Nz::Vector2ui GetCursorPosition(std::size_t glyphIndex) const; @@ -61,10 +61,8 @@ namespace Ndk inline void MoveCursor(int offset); inline void MoveCursor(const Nz::Vector2i& offset); - void ResizeToContent() override; - inline void SetCharacterFilter(CharacterFilter filter); - inline void SetCharacterSize(unsigned int characterSize); + void SetCharacterSize(unsigned int characterSize); inline void SetCursorPosition(std::size_t glyphIndex); inline void SetCursorPosition(Nz::Vector2ui cursorPosition); inline void SetEchoMode(EchoMode echoMode); @@ -108,7 +106,7 @@ namespace Ndk void RefreshCursor(); void UpdateDisplayText(); - std::function m_characterFilter; + CharacterFilter m_characterFilter; EchoMode m_echoMode; EntityHandle m_cursorEntity; EntityHandle m_textEntity; diff --git a/SDK/include/NDK/Widgets/TextAreaWidget.inl b/SDK/include/NDK/Widgets/TextAreaWidget.inl index 88be7520a..e4c9f2c30 100644 --- a/SDK/include/NDK/Widgets/TextAreaWidget.inl +++ b/SDK/include/NDK/Widgets/TextAreaWidget.inl @@ -33,7 +33,7 @@ namespace Ndk Erase(glyphPosition, glyphPosition + 1U); } - inline TextAreaWidget::CharacterFilter TextAreaWidget::GetCharacterFilter() const + inline const TextAreaWidget::CharacterFilter& TextAreaWidget::GetCharacterFilter() const { return m_characterFilter; } @@ -162,12 +162,7 @@ namespace Ndk inline void TextAreaWidget::SetCharacterFilter(CharacterFilter filter) { - m_characterFilter = filter; - } - - inline void TextAreaWidget::SetCharacterSize(unsigned int characterSize) - { - m_drawer.SetCharacterSize(characterSize); + m_characterFilter = std::move(filter); } inline void TextAreaWidget::SetCursorPosition(std::size_t glyphIndex) diff --git a/SDK/src/NDK/BaseWidget.cpp b/SDK/src/NDK/BaseWidget.cpp index dc33252e2..89ca6bb9c 100644 --- a/SDK/src/NDK/BaseWidget.cpp +++ b/SDK/src/NDK/BaseWidget.cpp @@ -81,7 +81,7 @@ namespace Ndk m_backgroundSprite->SetColor(m_backgroundColor); m_backgroundSprite->SetMaterial(Nz::Material::New((m_backgroundColor.IsOpaque()) ? "Basic2D" : "Translucent2D")); //< TODO: Use a shared material instead of creating one everytime - m_backgroundEntity = CreateEntity(false); + m_backgroundEntity = CreateEntity(); m_backgroundEntity->AddComponent().Attach(m_backgroundSprite, -1); m_backgroundEntity->AddComponent().SetParent(this); @@ -89,14 +89,14 @@ namespace Ndk } else { - m_backgroundEntity->Kill(); + m_backgroundEntity.Reset(); m_backgroundSprite.Reset(); } } /*! * \brief Checks if this widget has keyboard focus - * \return true if widget has keyboard focus, false otherwhise + * \return true if widget has keyboard focus, false otherwise */ bool BaseWidget::HasFocus() const { @@ -106,6 +106,19 @@ namespace Ndk return m_canvas->IsKeyboardOwner(m_canvasIndex); } + void BaseWidget::Resize(const Nz::Vector2f& size) + { + // Adjust new size + Nz::Vector2f newSize = size; + newSize.Maximize(m_minimumSize); + newSize.Minimize(m_maximumSize); + + NotifyParentResized(newSize); + m_size = newSize; + + Layout(); + } + void BaseWidget::SetBackgroundColor(const Nz::Color& color) { m_backgroundColor = color; @@ -131,11 +144,6 @@ namespace Ndk m_canvas->SetKeyboardOwner(m_canvasIndex); } - void BaseWidget::SetSize(const Nz::Vector2f& size) - { - SetContentSize({std::max(size.x - m_padding.left - m_padding.right, 0.f), std::max(size.y - m_padding.top - m_padding.bottom, 0.f)}); - } - void BaseWidget::Show(bool show) { if (m_visible != show) @@ -155,7 +163,7 @@ namespace Ndk } } - const Ndk::EntityHandle& BaseWidget::CreateEntity(bool isContentEntity) + const Ndk::EntityHandle& BaseWidget::CreateEntity() { const EntityHandle& newEntity = m_world->CreateEntity(); newEntity->Enable(m_visible); @@ -163,7 +171,6 @@ namespace Ndk m_entities.emplace_back(); WidgetEntity& widgetEntity = m_entities.back(); widgetEntity.handle = newEntity; - widgetEntity.isContent = isContentEntity; return newEntity; } @@ -179,7 +186,7 @@ namespace Ndk void BaseWidget::Layout() { if (m_backgroundEntity) - m_backgroundSprite->SetSize(m_contentSize.x + m_padding.left + m_padding.right, m_contentSize.y + m_padding.top + m_padding.bottom); + m_backgroundSprite->SetSize(m_size.x, m_size.y); UpdatePositionAndSize(); } @@ -282,16 +289,12 @@ namespace Ndk Nz::Vector2f widgetPos = Nz::Vector2f(GetPosition()); Nz::Vector2f widgetSize = GetSize(); - Nz::Vector2f contentPos = widgetPos + GetContentOrigin(); - Nz::Vector2f contentSize = GetContentSize(); - Nz::Recti fullBounds(Nz::Rectf(widgetPos.x, widgetPos.y, widgetSize.x, widgetSize.y)); - Nz::Recti contentBounds(Nz::Rectf(contentPos.x, contentPos.y, contentSize.x, contentSize.y)); for (WidgetEntity& widgetEntity : m_entities) { const Ndk::EntityHandle& entity = widgetEntity.handle; if (entity->HasComponent()) - entity->GetComponent().SetScissorRect((widgetEntity.isContent) ? contentBounds : fullBounds); + entity->GetComponent().SetScissorRect(fullBounds); } } } diff --git a/SDK/src/NDK/Canvas.cpp b/SDK/src/NDK/Canvas.cpp index 9a5996432..3959f1765 100644 --- a/SDK/src/NDK/Canvas.cpp +++ b/SDK/src/NDK/Canvas.cpp @@ -7,10 +7,6 @@ namespace Ndk { - void Canvas::ResizeToContent() - { - } - std::size_t Canvas::RegisterWidget(BaseWidget* widget) { WidgetEntry box; diff --git a/SDK/src/NDK/Widgets/BoxLayout.cpp b/SDK/src/NDK/Widgets/BoxLayout.cpp new file mode 100644 index 000000000..89564ed08 --- /dev/null +++ b/SDK/src/NDK/Widgets/BoxLayout.cpp @@ -0,0 +1,122 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Development Kit" +// For conditions of distribution and use, see copyright notice in Prerequisites.hpp + +#include +#include +#include +#include + +namespace Ndk +{ + void BoxLayout::Layout() + { + std::size_t axis1, axis2; + + switch (m_orientation) + { + case BoxLayoutOrientation_Horizontal: + axis1 = 0; //< x + axis2 = 1; //< y + break; + + case BoxLayoutOrientation_Vertical: + axis1 = 1; //< y + axis2 = 0; //< x + break; + + default: + assert(false); + break; + } + + m_childInfos.clear(); + + // Handle size + ForEachWidgetChild([&](BaseWidget* child) + { + if (!child->IsVisible()) + return; + + m_childInfos.emplace_back(); + auto& info = m_childInfos.back(); + info.isConstrained = false; + info.maximumSize = child->GetMaximumSize()[axis1]; + info.minimumSize = child->GetMinimumSize()[axis1]; + info.size = info.minimumSize; + info.widget = child; + }); + + Nz::Vector2f layoutSize = GetSize(); + + float availableSpace = layoutSize[axis1] - m_spacing * (m_childInfos.size() - 1); + float remainingSize = availableSpace; + for (auto& info : m_childInfos) + remainingSize -= info.minimumSize; + + // Okay this algorithm is FAR from perfect but I couldn't figure a way other than this one + std::size_t unconstrainedChildCount = m_childInfos.size(); + + bool hasUnconstrainedChilds = false; + for (std::size_t i = 0; i < m_childInfos.size(); ++i) + { + if (remainingSize <= 0.0001f) + break; + + float evenSize = remainingSize / unconstrainedChildCount; + + for (auto& info : m_childInfos) + { + if (info.isConstrained) + continue; + + float previousSize = info.size; + + info.size += evenSize; + if (info.size > info.maximumSize) + { + unconstrainedChildCount--; + + evenSize += (info.size - info.maximumSize) / unconstrainedChildCount; + info.isConstrained = true; + info.size = info.maximumSize; + } + else + hasUnconstrainedChilds = true; + + remainingSize -= info.size - previousSize; + } + + if (!hasUnconstrainedChilds) + break; + } + + float spacing = m_spacing + remainingSize / (m_childInfos.size() - 1); + + for (auto& info : m_childInfos) + { + Nz::Vector2f newSize = info.widget->GetSize(); + newSize[axis1] = info.size; + + info.widget->Resize(newSize); + } + + // Handle position + float cursor = 0.f; + bool first = true; + for (auto& info : m_childInfos) + { + if (first) + first = false; + else + cursor += spacing; + + Nz::Vector2f position = Nz::Vector2f(0.f, 0.f); + position[axis1] = cursor; + + info.widget->SetPosition(position); + + cursor += info.size; + }; + } +} diff --git a/SDK/src/NDK/Widgets/ButtonWidget.cpp b/SDK/src/NDK/Widgets/ButtonWidget.cpp index f432d86b7..c88645e44 100644 --- a/SDK/src/NDK/Widgets/ButtonWidget.cpp +++ b/SDK/src/NDK/Widgets/ButtonWidget.cpp @@ -30,13 +30,13 @@ namespace Ndk m_gradientSprite->SetCornerColor(Nz::RectCorner_RightBottom, m_cornerColor); m_gradientSprite->SetMaterial(Nz::Material::New("Basic2D")); - m_gradientEntity = CreateEntity(false); + m_gradientEntity = CreateEntity(); m_gradientEntity->AddComponent().SetParent(this); m_gradientEntity->AddComponent().Attach(m_gradientSprite); m_textSprite = Nz::TextSprite::New(); - m_textEntity = CreateEntity(true); + m_textEntity = CreateEntity(); m_textEntity->AddComponent().SetParent(this); m_textEntity->AddComponent().Attach(m_textSprite, 1); @@ -73,22 +73,15 @@ namespace Ndk return s_pressCornerColor; } - void ButtonWidget::ResizeToContent() - { - SetContentSize(Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths())); - } - void ButtonWidget::Layout() { BaseWidget::Layout(); - m_gradientSprite->SetSize(GetSize()); - - Nz::Vector2f origin = GetContentOrigin(); - const Nz::Vector2f& contentSize = GetContentSize(); + Nz::Vector2f size = GetSize(); + m_gradientSprite->SetSize(size); Nz::Boxf textBox = m_textEntity->GetComponent().GetAABB(); - m_textEntity->GetComponent().SetPosition(origin.x + contentSize.x / 2 - textBox.width / 2, origin.y + contentSize.y / 2 - textBox.height / 2); + m_textEntity->GetComponent().SetPosition(size.x / 2.f - textBox.width / 2.f, size.y / 2.f - textBox.height / 2.f); } void ButtonWidget::OnMouseButtonPress(int /*x*/, int /*y*/, Nz::Mouse::Button button) diff --git a/SDK/src/NDK/Widgets/CheckboxWidget.cpp b/SDK/src/NDK/Widgets/CheckboxWidget.cpp index 3f20ff7c6..1bea0c9ce 100644 --- a/SDK/src/NDK/Widgets/CheckboxWidget.cpp +++ b/SDK/src/NDK/Widgets/CheckboxWidget.cpp @@ -28,19 +28,19 @@ namespace Ndk m_checkboxContentSprite = Nz::Sprite::New(Nz::Material::New("Translucent2D")); m_textSprite = Nz::TextSprite::New(); - m_checkboxBorderEntity = CreateEntity(false); + m_checkboxBorderEntity = CreateEntity(); m_checkboxBorderEntity->AddComponent().SetParent(this); m_checkboxBorderEntity->AddComponent().Attach(m_checkboxBorderSprite); - m_checkboxBackgroundEntity = CreateEntity(false); + m_checkboxBackgroundEntity = CreateEntity(); m_checkboxBackgroundEntity->AddComponent().SetParent(this); m_checkboxBackgroundEntity->AddComponent().Attach(m_checkboxBackgroundSprite, 1); - m_checkboxContentEntity = CreateEntity(true); + m_checkboxContentEntity = CreateEntity(); m_checkboxContentEntity->AddComponent().SetParent(this); m_checkboxContentEntity->AddComponent().Attach(m_checkboxContentSprite, 2); - m_textEntity = CreateEntity(true); + m_textEntity = CreateEntity(); m_textEntity->AddComponent().SetParent(this); m_textEntity->AddComponent().Attach(m_textSprite); @@ -108,20 +108,11 @@ namespace Ndk return m_state; } - void CheckboxWidget::ResizeToContent() - { - Nz::Vector3f textSize = m_textSprite->GetBoundingVolume().obb.localBox.GetLengths(); - Nz::Vector2f checkboxSize = GetCheckboxSize(); - - Nz::Vector2f finalSize { checkboxSize.x + (m_adaptativeMargin ? checkboxSize.x / 2.f : m_textMargin) + textSize.x, std::max(textSize.y, checkboxSize.y) }; - SetContentSize(finalSize); - } - void CheckboxWidget::Layout() { BaseWidget::Layout(); - Nz::Vector2f origin = GetContentOrigin(); + Nz::Vector2f origin = Nz::Vector2f(0.f); Nz::Vector2f checkboxSize = GetCheckboxSize(); Nz::Vector2f borderSize = GetCheckboxBorderSize(); @@ -178,4 +169,14 @@ namespace Ndk m_checkboxContentSprite->SetTexture(Nz::TextureRef {}); } } + + void CheckboxWidget::UpdateSize() + { + Nz::Vector3f textSize = m_textSprite->GetBoundingVolume().obb.localBox.GetLengths(); + Nz::Vector2f checkboxSize = GetCheckboxSize(); + + Nz::Vector2f finalSize{ checkboxSize.x + (m_adaptativeMargin ? checkboxSize.x / 2.f : m_textMargin) + textSize.x, std::max(textSize.y, checkboxSize.y) }; + SetMinimumSize(finalSize); + SetPreferredSize(finalSize); + } } diff --git a/SDK/src/NDK/Widgets/ImageWidget.cpp b/SDK/src/NDK/Widgets/ImageWidget.cpp index b43d5ba8d..8a766419b 100644 --- a/SDK/src/NDK/Widgets/ImageWidget.cpp +++ b/SDK/src/NDK/Widgets/ImageWidget.cpp @@ -11,7 +11,7 @@ namespace Ndk ImageWidget::ImageWidget(BaseWidget* parent) : BaseWidget(parent) { - m_entity = CreateEntity(true); + m_entity = CreateEntity(); m_entity->AddComponent(); auto& gfx = m_entity->AddComponent(); @@ -19,19 +19,10 @@ namespace Ndk gfx.Attach(m_sprite); } - void ImageWidget::ResizeToContent() - { - Nz::Vector3ui textureSize = m_sprite->GetMaterial()->GetDiffuseMap()->GetSize(); - SetSize({ static_cast(textureSize.x), static_cast(textureSize.y) }); - } - void ImageWidget::Layout() { BaseWidget::Layout(); - Nz::Vector2f origin = GetContentOrigin(); - Nz::Vector2f contentSize = GetContentSize(); - m_entity->GetComponent().SetPosition(origin); - m_sprite->SetSize(contentSize); + m_sprite->SetSize(GetSize()); } } diff --git a/SDK/src/NDK/Widgets/LabelWidget.cpp b/SDK/src/NDK/Widgets/LabelWidget.cpp index 98deb8da3..4c6553011 100644 --- a/SDK/src/NDK/Widgets/LabelWidget.cpp +++ b/SDK/src/NDK/Widgets/LabelWidget.cpp @@ -13,7 +13,7 @@ namespace Ndk { m_textSprite = Nz::TextSprite::New(); - m_textEntity = CreateEntity(true); + m_textEntity = CreateEntity(); m_textEntity->AddComponent().Attach(m_textSprite); m_textEntity->AddComponent().SetParent(this); @@ -23,12 +23,5 @@ namespace Ndk void LabelWidget::Layout() { BaseWidget::Layout(); - - m_textEntity->GetComponent().SetPosition(GetContentOrigin()); - } - - void LabelWidget::ResizeToContent() - { - SetContentSize(Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths())); } } diff --git a/SDK/src/NDK/Widgets/ProgressBarWidget.cpp b/SDK/src/NDK/Widgets/ProgressBarWidget.cpp index 80f01d43a..3e2f01440 100644 --- a/SDK/src/NDK/Widgets/ProgressBarWidget.cpp +++ b/SDK/src/NDK/Widgets/ProgressBarWidget.cpp @@ -30,11 +30,11 @@ namespace Ndk SetBarColor(s_barColor, s_barCornerColor); - m_borderEntity = CreateEntity(false); + m_borderEntity = CreateEntity(); m_borderEntity->AddComponent().SetParent(this); m_borderEntity->AddComponent().Attach(m_borderSprite); - m_barEntity = CreateEntity(true); + m_barEntity = CreateEntity(); m_barEntity->AddComponent().SetParent(this); GraphicsComponent& graphics = m_barEntity->AddComponent(); @@ -43,7 +43,7 @@ namespace Ndk m_textSprite = Nz::TextSprite::New(); - m_textEntity = CreateEntity(true); + m_textEntity = CreateEntity(); m_textEntity->AddComponent().SetParent(this); m_textEntity->AddComponent().Attach(m_textSprite); @@ -76,8 +76,8 @@ namespace Ndk void ProgressBarWidget::Layout() { - Nz::Vector2f origin = GetContentOrigin(); - Nz::Vector2f size = GetContentSize(); + Nz::Vector2f origin = Nz::Vector2f(0.f); + Nz::Vector2f size = GetSize(); Nz::Vector2f progressBarSize = size; if (IsTextEnabled()) diff --git a/SDK/src/NDK/Widgets/TextAreaWidget.cpp b/SDK/src/NDK/Widgets/TextAreaWidget.cpp index 34ebac579..09355c09c 100644 --- a/SDK/src/NDK/Widgets/TextAreaWidget.cpp +++ b/SDK/src/NDK/Widgets/TextAreaWidget.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -20,19 +21,23 @@ namespace Ndk m_readOnly(false), m_tabEnabled(false) { - m_cursorEntity = CreateEntity(true); + m_cursorEntity = CreateEntity(); m_cursorEntity->AddComponent(); m_cursorEntity->AddComponent().SetParent(this); + m_cursorEntity->GetComponent().SetPosition(5.f, 3.f); m_cursorEntity->Enable(false); m_textSprite = Nz::TextSprite::New(); - m_textEntity = CreateEntity(true); + m_textEntity = CreateEntity(); m_textEntity->AddComponent().Attach(m_textSprite); m_textEntity->AddComponent().SetParent(this); + m_textEntity->GetComponent().SetPosition(5.f, 3.f); SetCursor(Nz::SystemCursor_Text); + SetCharacterSize(GetCharacterSize()); //< Actualize minimum / preferred size + EnableBackground(true); Layout(); } @@ -140,9 +145,25 @@ namespace Ndk return Nz::Vector2ui::Zero(); } - void TextAreaWidget::ResizeToContent() + void TextAreaWidget::SetCharacterSize(unsigned int characterSize) { - SetContentSize(Nz::Vector2f(m_textSprite->GetBoundingVolume().obb.localBox.GetLengths())); + m_drawer.SetCharacterSize(characterSize); + + std::size_t fontCount = m_drawer.GetFontCount(); + unsigned int lineHeight = 0; + int spaceAdvance = 0; + for (std::size_t i = 0; i < fontCount; ++i) + { + Nz::Font* font = m_drawer.GetFont(i); + + const Nz::Font::SizeInfo& sizeInfo = font->GetSizeInfo(characterSize); + lineHeight = std::max(lineHeight, sizeInfo.lineHeight); + spaceAdvance = std::max(spaceAdvance, sizeInfo.spaceAdvance); + } + + Nz::Vector2f size = { float(spaceAdvance), float(lineHeight) + 5.f }; + SetMinimumSize(size); + SetPreferredSize({ size.x * 6.f, size.y }); } void TextAreaWidget::Write(const Nz::String& text, std::size_t glyphPosition) @@ -165,8 +186,6 @@ namespace Ndk { BaseWidget::Layout(); - m_textEntity->GetComponent().SetPosition(GetContentOrigin()); - RefreshCursor(); } @@ -403,8 +422,7 @@ namespace Ndk { SetFocus(); - const Padding& padding = GetPadding(); - Nz::Vector2ui hoveredGlyph = GetHoveredGlyph(float(x - padding.left), float(y - padding.top)); + Nz::Vector2ui hoveredGlyph = GetHoveredGlyph(float(x) - 5.f, float(y) - 5.f); // Shift extends selection if (Nz::Keyboard::IsKeyPressed(Nz::Keyboard::LShift) || Nz::Keyboard::IsKeyPressed(Nz::Keyboard::RShift)) @@ -434,10 +452,7 @@ namespace Ndk void TextAreaWidget::OnMouseMoved(int x, int y, int deltaX, int deltaY) { if (m_isMouseButtonDown) - { - const Padding& padding = GetPadding(); - SetSelection(m_selectionCursor, GetHoveredGlyph(float(x - padding.left), float(y - padding.top))); - } + SetSelection(m_selectionCursor, GetHoveredGlyph(float(x) - 5.f, float(y) - 3.f)); } void TextAreaWidget::OnTextEntered(char32_t character, bool /*repeated*/) @@ -514,8 +529,6 @@ namespace Ndk if (m_readOnly) return; - m_cursorEntity->GetComponent().SetPosition(GetContentOrigin()); - std::size_t selectionLineCount = m_cursorPositionEnd.y - m_cursorPositionBegin.y + 1; std::size_t oldSpriteCount = m_cursorSprites.size(); if (m_cursorSprites.size() != selectionLineCount) diff --git a/build/scripts/tools/ndk_server.lua b/build/scripts/tools/ndk_server.lua index e235b1343..2fd17e7f1 100644 --- a/build/scripts/tools/ndk_server.lua +++ b/build/scripts/tools/ndk_server.lua @@ -36,6 +36,7 @@ TOOL.FilesExcluded = { "../SDK/**/Particle*Component.*", "../SDK/**/ParticleSystem.*", "../SDK/**/RenderSystem.*", + "../SDK/**/*Layout*.*", "../SDK/**/*Widget*.*", "../SDK/**/LuaBinding_Audio.*", "../SDK/**/LuaBinding_Graphics.*", From 602bdbe29223de03a92867f9f132d84778b3f235 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 11 Sep 2018 21:16:27 +0200 Subject: [PATCH 157/194] Update changelog --- ChangeLog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 23d2af364..cfd544bcb 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -146,6 +146,10 @@ Nazara Engine: - CullingList now handles box tests - ⚠️ CullingList now handles full and partial visibility testing - Added math class Angle, capable of handling both degrees and radians angles and converting them to euler angles/quaternions to improve 2D interface. +- ⚠️ Widgets have been reworked and no longer have padding, but instead have preferred, maximum and minimum size. +- ⚠️ BaseWidget::SetSize has been renamed to BaseWidget::Resize +- Added BaseWidget::ForEachWidgetChild +- Added experimental BoxLayout class Nazara Development Kit: - Added ImageWidget (#139) From b6a33c76ca9d8d05a81df32fbc257750f906737f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 25 Sep 2018 14:53:49 +0200 Subject: [PATCH 158/194] Fix crash on moving empty NetPacket --- include/Nazara/Core/ByteStream.hpp | 2 ++ include/Nazara/Core/ByteStream.inl | 23 ++++++++++++++--------- include/Nazara/Network/NetPacket.inl | 16 ++++++++++++---- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/include/Nazara/Core/ByteStream.hpp b/include/Nazara/Core/ByteStream.hpp index 2f1dba4b6..6c2069895 100644 --- a/include/Nazara/Core/ByteStream.hpp +++ b/include/Nazara/Core/ByteStream.hpp @@ -27,6 +27,8 @@ namespace Nz ByteStream(ByteStream&& stream) noexcept = default; virtual ~ByteStream(); + inline void ClearStream(); + inline Endianness GetDataEndianness() const; inline Nz::UInt64 GetSize() const; inline Stream* GetStream() const; diff --git a/include/Nazara/Core/ByteStream.inl b/include/Nazara/Core/ByteStream.inl index b0c4c8233..c52ec0274 100644 --- a/include/Nazara/Core/ByteStream.inl +++ b/include/Nazara/Core/ByteStream.inl @@ -30,6 +30,18 @@ namespace Nz NazaraWarning("Failed to flush bits at serializer destruction"); } + /*! + * \brief Reset stream + */ + inline void ByteStream::ClearStream() + { + // We don't want to lose some bits.. + FlushBits(); + + m_context.stream = nullptr; + m_ownedStream.reset(); + } + /*! * \brief Gets the stream endianness * \return Type of the endianness @@ -113,22 +125,15 @@ namespace Nz } /*! - * \brief Sets this with a stream + * \brief Changes stream * * \param stream Stream existing - * - * \remark Produces a NazaraAssert if stream is invalid */ - inline void ByteStream::SetStream(Stream* stream) { - NazaraAssert(stream, "Invalid stream"); - - // We don't want to lose some bits.. - FlushBits(); + ClearStream(); m_context.stream = stream; - m_ownedStream.reset(); } /*! diff --git a/include/Nazara/Network/NetPacket.inl b/include/Nazara/Network/NetPacket.inl index 7cd78b529..b2a4a5f60 100644 --- a/include/Nazara/Network/NetPacket.inl +++ b/include/Nazara/Network/NetPacket.inl @@ -56,8 +56,11 @@ namespace Nz m_netCode(packet.m_netCode) { ///< Redirect memory stream to the moved buffer - m_memoryStream.SetBuffer(m_buffer.get(), m_memoryStream.GetOpenMode()); - SetStream(&m_memoryStream); + if (m_buffer) + { + m_memoryStream.SetBuffer(m_buffer.get(), m_memoryStream.GetOpenMode()); + SetStream(&m_memoryStream); + } } /*! @@ -206,8 +209,13 @@ namespace Nz m_netCode = packet.m_netCode; ///< Redirect memory stream to the moved buffer - m_memoryStream.SetBuffer(m_buffer.get(), m_memoryStream.GetOpenMode()); - SetStream(&m_memoryStream); + if (m_buffer) + { + m_memoryStream.SetBuffer(m_buffer.get(), m_memoryStream.GetOpenMode()); + SetStream(&m_memoryStream); + } + else + SetStream(static_cast(nullptr)); return *this; } From 974fa07bcba54b11c9a41b3f20cd07ced9846992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 25 Sep 2018 14:53:56 +0200 Subject: [PATCH 159/194] Remove Vulkan.hpp --- include/Nazara/Vulkan.hpp | 44 --------------------------------------- 1 file changed, 44 deletions(-) delete mode 100644 include/Nazara/Vulkan.hpp diff --git a/include/Nazara/Vulkan.hpp b/include/Nazara/Vulkan.hpp deleted file mode 100644 index a3e363272..000000000 --- a/include/Nazara/Vulkan.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// This file was automatically generated on 15 May 2016 at 00:11:13 - -/* - Nazara Engine - Vulkan - - Copyright (C) 2015 Jérôme "Lynix" Leclercq (Lynix680@gmail.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is furnished to do - so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -#pragma once - -#ifndef NAZARA_GLOBAL_VULKAN_HPP -#define NAZARA_GLOBAL_VULKAN_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif // NAZARA_GLOBAL_VULKAN_HPP From 706a06b506cc47ee75337d947598f0ca6b2b9ff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 25 Sep 2018 15:51:45 +0200 Subject: [PATCH 160/194] Increase NetPacket size from UInt16 to UInt32 --- include/Nazara/Network/NetPacket.hpp | 6 +++--- src/Nazara/Network/NetPacket.cpp | 6 +++--- src/Nazara/Network/TcpClient.cpp | 4 ++-- src/Nazara/Network/UdpSocket.cpp | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/Nazara/Network/NetPacket.hpp b/include/Nazara/Network/NetPacket.hpp index 62be3e990..37003e14c 100644 --- a/include/Nazara/Network/NetPacket.hpp +++ b/include/Nazara/Network/NetPacket.hpp @@ -46,10 +46,10 @@ namespace Nz NetPacket& operator=(const NetPacket&) = delete; NetPacket& operator=(NetPacket&& packet); - static bool DecodeHeader(const void* data, UInt16* packetSize, UInt16* netCode); - static bool EncodeHeader(void* data, UInt16 packetSize, UInt16 netCode); + static bool DecodeHeader(const void* data, UInt32* packetSize, UInt16* netCode); + static bool EncodeHeader(void* data, UInt32 packetSize, UInt16 netCode); - static constexpr std::size_t HeaderSize = sizeof(UInt16) + sizeof(UInt16); //< PacketSize + NetCode + static constexpr std::size_t HeaderSize = sizeof(UInt32) + sizeof(UInt16); //< PacketSize + NetCode private: void OnEmptyStream() override; diff --git a/src/Nazara/Network/NetPacket.cpp b/src/Nazara/Network/NetPacket.cpp index 0dda7c864..4df6e0cae 100644 --- a/src/Nazara/Network/NetPacket.cpp +++ b/src/Nazara/Network/NetPacket.cpp @@ -45,7 +45,7 @@ namespace Nz NazaraAssert(m_netCode != NetCode_Invalid, "Invalid NetCode"); std::size_t size = m_buffer->GetSize(); - if (!EncodeHeader(m_buffer->GetBuffer(), static_cast(size), m_netCode)) + if (!EncodeHeader(m_buffer->GetBuffer(), static_cast(size), m_netCode)) { NazaraError("Failed to encode packet header"); return nullptr; @@ -64,7 +64,7 @@ namespace Nz * \param netCode Packet number */ - bool NetPacket::DecodeHeader(const void* data, UInt16* packetSize, UInt16* netCode) + bool NetPacket::DecodeHeader(const void* data, UInt32* packetSize, UInt16* netCode) { MemoryView stream(data, HeaderSize); @@ -83,7 +83,7 @@ namespace Nz * \param netCode Packet number */ - bool NetPacket::EncodeHeader(void* data, UInt16 packetSize, UInt16 netCode) + bool NetPacket::EncodeHeader(void* data, UInt32 packetSize, UInt16 netCode) { MemoryView stream(data, HeaderSize); diff --git a/src/Nazara/Network/TcpClient.cpp b/src/Nazara/Network/TcpClient.cpp index 9e2eb7e0c..56060b40e 100644 --- a/src/Nazara/Network/TcpClient.cpp +++ b/src/Nazara/Network/TcpClient.cpp @@ -244,7 +244,7 @@ namespace Nz NazaraAssert(m_pendingPacket.received <= NetPacket::HeaderSize, "Received more data than header size"); if (m_pendingPacket.received >= NetPacket::HeaderSize) { - UInt16 size; + UInt32 size; if (!NetPacket::DecodeHeader(m_pendingPacket.data.GetConstBuffer(), &size, &m_pendingPacket.netcode)) { m_lastError = SocketError_Packet; @@ -261,7 +261,7 @@ namespace Nz // We may have just received the header now if (m_pendingPacket.headerReceived) { - UInt16 packetSize = static_cast(m_pendingPacket.data.GetSize()); //< Total packet size + UInt32 packetSize = static_cast(m_pendingPacket.data.GetSize()); //< Total packet size if (packetSize == 0) { // Special case: our packet carry no data diff --git a/src/Nazara/Network/UdpSocket.cpp b/src/Nazara/Network/UdpSocket.cpp index c0a88eb88..a44ad3c14 100644 --- a/src/Nazara/Network/UdpSocket.cpp +++ b/src/Nazara/Network/UdpSocket.cpp @@ -182,7 +182,7 @@ namespace Nz return false; //< No datagram received Nz::UInt16 netCode; - Nz::UInt16 packetSize; + Nz::UInt32 packetSize; if (!NetPacket::DecodeHeader(packet->GetConstData(), &packetSize, &netCode)) { m_lastError = SocketError_Packet; From 2243749480521e0ff9c7d73a53b1c3ea1c6e8490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 25 Sep 2018 15:55:16 +0200 Subject: [PATCH 161/194] Math/Angle: Fix warning --- include/Nazara/Math/Angle.inl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index 82f7c4dbe..46e03d5b1 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -243,9 +243,9 @@ namespace Nz */ template template - Angle& Angle::Set(const Angle& Angle) + Angle& Angle::Set(const Angle& angle) { - angle = RadianToDegree(Angle.angle); + angle = RadianToDegree(angle.angle); return *this; } @@ -256,9 +256,9 @@ namespace Nz */ template template - Angle& Angle::Set(const Angle& Angle) + Angle& Angle::Set(const Angle& angle) { - angle = DegreeToRadian(Angle.angle); + angle = DegreeToRadian(angle.angle); return *this; } @@ -268,9 +268,9 @@ namespace Nz * \param Angle Angle which will be copied */ template - Angle& Angle::Set(const Angle& Angle) + Angle& Angle::Set(const Angle& angle) { - angle = Angle.angle; + angle = angle.angle; return *this; } @@ -283,9 +283,9 @@ namespace Nz */ template template - Angle& Angle::Set(const Angle& Angle) + Angle& Angle::Set(const Angle& angle) { - angle = static_cast(Angle.angle); + angle = static_cast(angle.angle); return *this; } From e1cfa2e1849c5b411407ba3379844e790acb7292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 25 Sep 2018 15:56:35 +0200 Subject: [PATCH 162/194] And again --- include/Nazara/Math/Angle.hpp | 8 ++++---- include/Nazara/Math/Angle.inl | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index a64893e3a..74e2b884d 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -42,10 +42,10 @@ namespace Nz void Normalize(); - template> Angle& Set(const Angle& Angle); - template> Angle& Set(const Angle& Angle); - Angle& Set(const Angle& Angle); - template Angle& Set(const Angle& Angle); + template> Angle& Set(const Angle& ang); + template> Angle& Set(const Angle& ang); + Angle& Set(const Angle& ang); + template Angle& Set(const Angle& ang); Angle ToDegrees() const; EulerAngles ToEulerAngles() const; diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index 46e03d5b1..354cab93f 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -243,9 +243,9 @@ namespace Nz */ template template - Angle& Angle::Set(const Angle& angle) + Angle& Angle::Set(const Angle& ang) { - angle = RadianToDegree(angle.angle); + angle = RadianToDegree(ang.angle); return *this; } @@ -256,9 +256,9 @@ namespace Nz */ template template - Angle& Angle::Set(const Angle& angle) + Angle& Angle::Set(const Angle& ang) { - angle = DegreeToRadian(angle.angle); + angle = DegreeToRadian(ang.angle); return *this; } @@ -268,9 +268,9 @@ namespace Nz * \param Angle Angle which will be copied */ template - Angle& Angle::Set(const Angle& angle) + Angle& Angle::Set(const Angle& ang) { - angle = angle.angle; + angle = ang.angle; return *this; } @@ -283,9 +283,9 @@ namespace Nz */ template template - Angle& Angle::Set(const Angle& angle) + Angle& Angle::Set(const Angle& ang) { - angle = static_cast(angle.angle); + angle = static_cast(ang.angle); return *this; } From 583393acd0ae6ac3a6f8098342492a2d056a521e Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 30 Sep 2018 18:04:49 +0200 Subject: [PATCH 163/194] Network/AbstractSocket: Replace OnStateChange signal by OnStateChanged --- ChangeLog.md | 1 + include/Nazara/Network/AbstractSocket.hpp | 2 +- include/Nazara/Network/AbstractSocket.inl | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index cfd544bcb..a8734d9a9 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -150,6 +150,7 @@ Nazara Engine: - ⚠️ BaseWidget::SetSize has been renamed to BaseWidget::Resize - Added BaseWidget::ForEachWidgetChild - Added experimental BoxLayout class +- ⚠️ AbstractSocket::OnStateChange has been replaced by OnStateChanged, which is now called after state has been changed (with oldState and newState as parameters). Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Network/AbstractSocket.hpp b/include/Nazara/Network/AbstractSocket.hpp index 315364e8d..ca69d7713 100644 --- a/include/Nazara/Network/AbstractSocket.hpp +++ b/include/Nazara/Network/AbstractSocket.hpp @@ -44,7 +44,7 @@ namespace Nz AbstractSocket& operator=(AbstractSocket&& abstractSocket); // Signals: - NazaraSignal(OnStateChange, const AbstractSocket* /*socket*/, SocketState /*newState*/); + NazaraSignal(OnStateChanged, const AbstractSocket* /*socket*/, SocketState /*oldState*/, SocketState /*newState*/); protected: AbstractSocket(SocketType type); diff --git a/include/Nazara/Network/AbstractSocket.inl b/include/Nazara/Network/AbstractSocket.inl index fe8aed5af..530b696e0 100644 --- a/include/Nazara/Network/AbstractSocket.inl +++ b/include/Nazara/Network/AbstractSocket.inl @@ -1,4 +1,4 @@ -// Copyright (C) 2017 Jrme Leclercq +// Copyright (C) 2017 Jérôme Leclercq // This file is part of the "Nazara Engine - Network module" // For conditions of distribution and use, see copyright notice in Config.hpp @@ -66,8 +66,9 @@ namespace Nz { if (m_state != newState) { - OnStateChange(this, newState); + SocketState oldState = m_state; m_state = newState; + OnStateChange(this, oldState, newState); } } } From f0da71b807f83ee913d605385212b254e170635c Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 30 Sep 2018 18:05:15 +0200 Subject: [PATCH 164/194] Move changelogs entries belonging to the NDK --- ChangeLog.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index a8734d9a9..3219f10ec 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -146,10 +146,6 @@ Nazara Engine: - CullingList now handles box tests - ⚠️ CullingList now handles full and partial visibility testing - Added math class Angle, capable of handling both degrees and radians angles and converting them to euler angles/quaternions to improve 2D interface. -- ⚠️ Widgets have been reworked and no longer have padding, but instead have preferred, maximum and minimum size. -- ⚠️ BaseWidget::SetSize has been renamed to BaseWidget::Resize -- Added BaseWidget::ForEachWidgetChild -- Added experimental BoxLayout class - ⚠️ AbstractSocket::OnStateChange has been replaced by OnStateChanged, which is now called after state has been changed (with oldState and newState as parameters). Nazara Development Kit: @@ -211,6 +207,10 @@ Nazara Development Kit: - Make Ndk::PhysicsSystem2D an interface of Nz::PhysWorld2D - ⚠️ GraphicsComponent no longer has a BoundingVolume, it instead has only an AABB with its attached InstancedRenderable getting a BoundingVolume of their own, improving culling possibilities. - RenderSystem now does cull InstancedRenderables attached to a GraphicsComponent, improving performance. +- ⚠️ Widgets have been reworked and no longer have padding, but instead have preferred, maximum and minimum size. +- ⚠️ BaseWidget::SetSize has been renamed to BaseWidget::Resize +- Added BaseWidget::ForEachWidgetChild +- Added experimental BoxLayout class # 0.4: From 8091e5234888497af4052e91462307eaa666448e Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 30 Sep 2018 18:07:38 +0200 Subject: [PATCH 165/194] Forgot to save this file --- include/Nazara/Network/AbstractSocket.inl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Nazara/Network/AbstractSocket.inl b/include/Nazara/Network/AbstractSocket.inl index 530b696e0..9b7434812 100644 --- a/include/Nazara/Network/AbstractSocket.inl +++ b/include/Nazara/Network/AbstractSocket.inl @@ -68,7 +68,7 @@ namespace Nz { SocketState oldState = m_state; m_state = newState; - OnStateChange(this, oldState, newState); + OnStateChanged(this, oldState, newState); } } } From f6b0405f9b4137cdeb285aa6264b669514b4ed15 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 30 Sep 2018 18:08:17 +0200 Subject: [PATCH 166/194] Sdk/RenderSystem: Resolve skinning before rendering --- ChangeLog.md | 1 + SDK/src/NDK/Systems/RenderSystem.cpp | 3 +++ 2 files changed, 4 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index 3219f10ec..a0ab78b93 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -211,6 +211,7 @@ Nazara Development Kit: - ⚠️ BaseWidget::SetSize has been renamed to BaseWidget::Resize - Added BaseWidget::ForEachWidgetChild - Added experimental BoxLayout class +- RenderSystem now resolve skinning before render # 0.4: diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index 25b8e3585..8b4bfe03f 100644 --- a/SDK/src/NDK/Systems/RenderSystem.cpp +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -184,6 +185,8 @@ namespace Ndk m_coordinateSystemInvalidated = false; } + Nz::SkinningManager::Skin(); + UpdateDynamicReflections(); UpdatePointSpotShadowMaps(); From 13a515c1b5ffc82986ad87d10d074969fc2b0afd Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 1 Oct 2018 22:19:49 +0200 Subject: [PATCH 167/194] Network/TcpClient: WaitForConnected now closes the socket on failure --- ChangeLog.md | 1 + src/Nazara/Network/TcpClient.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index a0ab78b93..76c4236d4 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -147,6 +147,7 @@ Nazara Engine: - ⚠️ CullingList now handles full and partial visibility testing - Added math class Angle, capable of handling both degrees and radians angles and converting them to euler angles/quaternions to improve 2D interface. - ⚠️ AbstractSocket::OnStateChange has been replaced by OnStateChanged, which is now called after state has been changed (with oldState and newState as parameters). +- ⚠️ TcpClient::WaitForconnected now closes the socket on failure. Nazara Development Kit: - Added ImageWidget (#139) diff --git a/src/Nazara/Network/TcpClient.cpp b/src/Nazara/Network/TcpClient.cpp index 56060b40e..41d06348d 100644 --- a/src/Nazara/Network/TcpClient.cpp +++ b/src/Nazara/Network/TcpClient.cpp @@ -467,9 +467,9 @@ namespace Nz SocketState newState = SocketImpl::Connect(m_handle, m_peerAddress, msTimeout, &m_lastError); NazaraAssert(newState != SocketState_Connecting, "Invalid internal return"); //< Connect cannot return Connecting is a timeout was specified - // Prevent valid peer address in non-connected state + // Prevent valid stats in non-connected state if (newState == SocketState_NotConnected) - m_peerAddress = IpAddress::Invalid; + Close(); UpdateState(newState); return newState == SocketState_Connected; From dad2dbae1c524fb67af7b9eb161aada92bd0bf71 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 1 Oct 2018 22:38:20 +0200 Subject: [PATCH 168/194] Network/TcpClient: WaitForConnected now returns new socket state --- ChangeLog.md | 1 + include/Nazara/Network/TcpClient.hpp | 2 +- src/Nazara/Network/TcpClient.cpp | 29 ++++++++++++++-------------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 76c4236d4..1b4bc564b 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -148,6 +148,7 @@ Nazara Engine: - Added math class Angle, capable of handling both degrees and radians angles and converting them to euler angles/quaternions to improve 2D interface. - ⚠️ AbstractSocket::OnStateChange has been replaced by OnStateChanged, which is now called after state has been changed (with oldState and newState as parameters). - ⚠️ TcpClient::WaitForconnected now closes the socket on failure. +- ⚠️ TcpClient::WaitForconnected now returns the new socket state. Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Network/TcpClient.hpp b/include/Nazara/Network/TcpClient.hpp index 43b299994..7c92e2ce0 100644 --- a/include/Nazara/Network/TcpClient.hpp +++ b/include/Nazara/Network/TcpClient.hpp @@ -54,7 +54,7 @@ namespace Nz bool SetCursorPos(UInt64 offset) override; - bool WaitForConnected(UInt64 msTimeout = 3000); + SocketState WaitForConnected(UInt64 msTimeout = 3000); inline TcpClient& operator=(TcpClient&& tcpClient) = default; diff --git a/src/Nazara/Network/TcpClient.cpp b/src/Nazara/Network/TcpClient.cpp index 41d06348d..441174836 100644 --- a/src/Nazara/Network/TcpClient.cpp +++ b/src/Nazara/Network/TcpClient.cpp @@ -432,24 +432,18 @@ namespace Nz /*! * \brief Waits for being connected before time out - * \return true If connection is successful + * \return The new socket state, either Connected if connection did succeed or NotConnected if an error occurred * - * \param msTimeout Time in milliseconds before time out + * This functions waits for the pending connection to either succeed or fail for a specific duration before failing. * - * \remark Produces a NazaraAssert if socket is invalid + * \param msTimeout Time in milliseconds before time out (0 for system-specific duration, like a blocking connect would) + * + * \remark This function doesn't do anything if the socket is not currently connecting. */ - - bool TcpClient::WaitForConnected(UInt64 msTimeout) + SocketState TcpClient::WaitForConnected(UInt64 msTimeout) { switch (m_state) { - case SocketState_Bound: - case SocketState_Resolving: - break; - - case SocketState_Connected: - return true; - case SocketState_Connecting: { NazaraAssert(m_handle != SocketImpl::InvalidHandle, "Invalid handle"); @@ -472,15 +466,20 @@ namespace Nz Close(); UpdateState(newState); - return newState == SocketState_Connected; + return newState; } + case SocketState_Connected: case SocketState_NotConnected: - return false; + return m_state; + + case SocketState_Bound: + case SocketState_Resolving: + break; } NazaraInternalError("Unhandled socket state (0x" + String::Number(m_state, 16) + ')'); - return false; + return m_state; } /*! From 67c56b2abac744390a1fd271ecb24f2dc7936007 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 1 Oct 2018 23:04:53 +0200 Subject: [PATCH 169/194] Network/TcpClient: Add PollForConnected --- ChangeLog.md | 1 + include/Nazara/Network/TcpClient.hpp | 2 + src/Nazara/Network/Posix/SocketImpl.cpp | 105 ++++++++++++------------ src/Nazara/Network/Posix/SocketImpl.hpp | 2 +- src/Nazara/Network/TcpClient.cpp | 61 +++++++++++--- src/Nazara/Network/Win32/SocketImpl.cpp | 105 ++++++++++++------------ src/Nazara/Network/Win32/SocketImpl.hpp | 2 +- 7 files changed, 159 insertions(+), 119 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 1b4bc564b..01a31cf2a 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -149,6 +149,7 @@ Nazara Engine: - ⚠️ AbstractSocket::OnStateChange has been replaced by OnStateChanged, which is now called after state has been changed (with oldState and newState as parameters). - ⚠️ TcpClient::WaitForconnected now closes the socket on failure. - ⚠️ TcpClient::WaitForconnected now returns the new socket state. +- Added TcpClient::PollForConnected Nazara Development Kit: - Added ImageWidget (#139) diff --git a/include/Nazara/Network/TcpClient.hpp b/include/Nazara/Network/TcpClient.hpp index 7c92e2ce0..13ab9a13b 100644 --- a/include/Nazara/Network/TcpClient.hpp +++ b/include/Nazara/Network/TcpClient.hpp @@ -45,6 +45,8 @@ namespace Nz inline bool IsLowDelayEnabled() const; inline bool IsKeepAliveEnabled() const; + SocketState PollForConnected(UInt64 waitDuration = 0); + bool Receive(void* buffer, std::size_t size, std::size_t* received); bool ReceivePacket(NetPacket* packet); diff --git a/src/Nazara/Network/Posix/SocketImpl.cpp b/src/Nazara/Network/Posix/SocketImpl.cpp index 46afef418..8bccda0db 100644 --- a/src/Nazara/Network/Posix/SocketImpl.cpp +++ b/src/Nazara/Network/Posix/SocketImpl.cpp @@ -138,59 +138,6 @@ namespace Nz return SocketState_Connected; } - SocketState SocketImpl::Connect(SocketHandle handle, const IpAddress& address, UInt64 msTimeout, SocketError* error) - { - SocketState state = Connect(handle, address, error); - if (state == SocketState_Connecting) - { - // http://developerweb.net/viewtopic.php?id=3196 - fd_set localSet; - FD_ZERO(&localSet); - FD_SET(handle, &localSet); - - timeval tv; - tv.tv_sec = static_cast(msTimeout / 1000ULL); - tv.tv_usec = static_cast((msTimeout % 1000ULL) * 1000ULL); - - int ret = select(handle + 1, nullptr, &localSet, &localSet, (msTimeout > 0) ? &tv : nullptr); - if (ret > 0) - { - int code = GetLastErrorCode(handle, error); - if (code < 0) //< GetLastErrorCode() failed - return SocketState_NotConnected; - - if (code) - { - if (error) - *error = TranslateErrnoToSocketError(code); - - return SocketState_NotConnected; - } - } - else if (ret == 0) - { - if (error) - *error = SocketError_TimedOut; - - return SocketState_NotConnected; - } - else - { - if (error) - *error = TranslateErrnoToSocketError(GetLastErrorCode()); - - return SocketState_NotConnected; - } - - if (error) - *error = SocketError_NoError; - - state = SocketState_Connected; - } - - return state; - } - bool SocketImpl::Initialize() { return true; @@ -462,6 +409,58 @@ namespace Nz return static_cast(result); } + SocketState SocketImpl::PollConnection(SocketHandle handle, const IpAddress& address, UInt64 msTimeout, SocketError* error) + { + // http://developerweb.net/viewtopic.php?id=3196 + fd_set localSet; + FD_ZERO(&localSet); + FD_SET(handle, &localSet); + + timeval tv; + tv.tv_sec = static_cast(msTimeout / 1000ULL); + tv.tv_usec = static_cast((msTimeout % 1000ULL) * 1000ULL); + + int ret = ::select(0, nullptr, &localSet, &localSet, (msTimeout >= 0 && msTimeout != std::numeric_limits::max()) ? &tv : nullptr); + if (ret > 0) + { + int code = GetLastErrorCode(handle, error); + if (code < 0) //< GetLastErrorCode() failed + return SocketState_NotConnected; + + if (code) + { + if (error) + *error = TranslateWSAErrorToSocketError(code); + + return SocketState_NotConnected; + } + } + else if (ret == 0) + { + if (error) + { + if (msTimeout > 0) + *error = SocketError_TimedOut; + else + *error = SocketError_NoError; + } + + return SocketState_Connecting; + } + else + { + if (error) + *error = TranslateWSAErrorToSocketError(WSAGetLastError()); + + return SocketState_NotConnected; + } + + if (error) + *error = SocketError_NoError; + + return SocketState_Connected; + } + bool SocketImpl::Receive(SocketHandle handle, void* buffer, int length, int* read, SocketError* error) { NazaraAssert(handle != InvalidHandle, "Invalid handle"); diff --git a/src/Nazara/Network/Posix/SocketImpl.hpp b/src/Nazara/Network/Posix/SocketImpl.hpp index af22eb8dd..7365ca600 100644 --- a/src/Nazara/Network/Posix/SocketImpl.hpp +++ b/src/Nazara/Network/Posix/SocketImpl.hpp @@ -40,7 +40,6 @@ namespace Nz static void Close(SocketHandle handle); static SocketState Connect(SocketHandle handle, const IpAddress& address, SocketError* error); - static SocketState Connect(SocketHandle handle, const IpAddress& address, UInt64 msTimeout, SocketError* error); static bool Initialize(); @@ -61,6 +60,7 @@ namespace Nz static std::size_t QuerySendBufferSize(SocketHandle handle, SocketError* error = nullptr); static unsigned int Poll(PollSocket* fdarray, std::size_t nfds, int timeout, SocketError* error); + static SocketState PollConnection(SocketHandle handle, const IpAddress& address, UInt64 msTimeout, SocketError* error); static bool Receive(SocketHandle handle, void* buffer, int length, int* read, SocketError* error); static bool ReceiveFrom(SocketHandle handle, void* buffer, int length, IpAddress* from, int* read, SocketError* error); diff --git a/src/Nazara/Network/TcpClient.cpp b/src/Nazara/Network/TcpClient.cpp index 441174836..9b43fbea0 100644 --- a/src/Nazara/Network/TcpClient.cpp +++ b/src/Nazara/Network/TcpClient.cpp @@ -173,6 +173,50 @@ namespace Nz return QueryAvailableBytes(); } + /*! + * \brief Polls the connection status of the currently connecting socket + * \return New socket state, which maybe unchanged (if connecting is still pending), SocketState_Connected if connection is successful or SocketState_NotConnected if connection failed + * + * This functions checks if the pending connection has either succeeded, failed or is still processing at the time of the call. + * + * \remark This function doesn't do anything if the socket is not currently connecting. + * + * \see WaitForConnected + */ + SocketState TcpClient::PollForConnected(UInt64 waitDuration) + { + switch (m_state) + { + case SocketState_Connecting: + { + NazaraAssert(m_handle != SocketImpl::InvalidHandle, "Invalid handle"); + + SocketState newState = SocketImpl::PollConnection(m_handle, m_peerAddress, waitDuration, &m_lastError); + + // Prevent valid peer address in non-connected state + if (newState == SocketState_NotConnected) + { + m_openMode = OpenMode_NotOpen; + m_peerAddress = IpAddress::Invalid; + } + + UpdateState(newState); + return newState; + } + + case SocketState_Connected: + case SocketState_NotConnected: + return m_state; + + case SocketState_Bound: + case SocketState_Resolving: + break; + } + + NazaraInternalError("Unexpected socket state (0x" + String::Number(m_state, 16) + ')'); + return m_state; + } + /*! * \brief Receives the data available * \return true If data received @@ -439,6 +483,8 @@ namespace Nz * \param msTimeout Time in milliseconds before time out (0 for system-specific duration, like a blocking connect would) * * \remark This function doesn't do anything if the socket is not currently connecting. + * + * \see PollForConnected */ SocketState TcpClient::WaitForConnected(UInt64 msTimeout) { @@ -448,18 +494,11 @@ namespace Nz { NazaraAssert(m_handle != SocketImpl::InvalidHandle, "Invalid handle"); - CallOnExit restoreBlocking; - if (m_isBlockingEnabled) - { - SocketImpl::SetBlocking(m_handle, false); - restoreBlocking.Reset([this] () - { - SocketImpl::SetBlocking(m_handle, true); - }); - } + SocketState newState = SocketImpl::PollConnection(m_handle, m_peerAddress, (msTimeout > 0) ? msTimeout : std::numeric_limits::max(), &m_lastError); - SocketState newState = SocketImpl::Connect(m_handle, m_peerAddress, msTimeout, &m_lastError); - NazaraAssert(newState != SocketState_Connecting, "Invalid internal return"); //< Connect cannot return Connecting is a timeout was specified + // If connection is still pending after waiting, cancel it + if (newState == SocketState_Connecting) + newState = SocketState_NotConnected; // Prevent valid stats in non-connected state if (newState == SocketState_NotConnected) diff --git a/src/Nazara/Network/Win32/SocketImpl.cpp b/src/Nazara/Network/Win32/SocketImpl.cpp index e1191e07d..f9e4b42f5 100644 --- a/src/Nazara/Network/Win32/SocketImpl.cpp +++ b/src/Nazara/Network/Win32/SocketImpl.cpp @@ -154,59 +154,6 @@ namespace Nz return SocketState_Connected; } - SocketState SocketImpl::Connect(SocketHandle handle, const IpAddress& address, UInt64 msTimeout, SocketError* error) - { - SocketState state = Connect(handle, address, error); - if (state == SocketState_Connecting) - { - // http://developerweb.net/viewtopic.php?id=3196 - fd_set localSet; - FD_ZERO(&localSet); - FD_SET(handle, &localSet); - - timeval tv; - tv.tv_sec = static_cast(msTimeout / 1000ULL); - tv.tv_usec = static_cast((msTimeout % 1000ULL) * 1000ULL); - - int ret = select(0, nullptr, &localSet, &localSet, (msTimeout > 0) ? &tv : nullptr); - if (ret > 0) - { - int code = GetLastErrorCode(handle, error); - if (code < 0) //< GetLastErrorCode() failed - return SocketState_NotConnected; - - if (code) - { - if (error) - *error = TranslateWSAErrorToSocketError(code); - - return SocketState_NotConnected; - } - } - else if (ret == 0) - { - if (error) - *error = SocketError_TimedOut; - - return SocketState_NotConnected; - } - else - { - if (error) - *error = TranslateWSAErrorToSocketError(WSAGetLastError()); - - return SocketState_NotConnected; - } - - if (error) - *error = SocketError_NoError; - - state = SocketState_Connected; - } - - return state; - } - bool SocketImpl::Initialize() { int errorCode = WSAStartup(MAKEWORD(2, 2), &s_WSA); @@ -502,6 +449,58 @@ namespace Nz return 0; #endif } + + SocketState SocketImpl::PollConnection(SocketHandle handle, const IpAddress& address, UInt64 msTimeout, SocketError* error) + { + // http://developerweb.net/viewtopic.php?id=3196 + fd_set localSet; + FD_ZERO(&localSet); + FD_SET(handle, &localSet); + + timeval tv; + tv.tv_sec = static_cast(msTimeout / 1000ULL); + tv.tv_usec = static_cast((msTimeout % 1000ULL) * 1000ULL); + + int ret = ::select(0, nullptr, &localSet, &localSet, (msTimeout != std::numeric_limits::max()) ? &tv : nullptr); + if (ret > 0) + { + int code = GetLastErrorCode(handle, error); + if (code < 0) //< GetLastErrorCode() failed + return SocketState_NotConnected; + + if (code) + { + if (error) + *error = TranslateWSAErrorToSocketError(code); + + return SocketState_NotConnected; + } + } + else if (ret == 0) + { + if (error) + { + if (msTimeout > 0) + *error = SocketError_TimedOut; + else + *error = SocketError_NoError; + } + + return SocketState_Connecting; + } + else + { + if (error) + *error = TranslateWSAErrorToSocketError(WSAGetLastError()); + + return SocketState_NotConnected; + } + + if (error) + *error = SocketError_NoError; + + return SocketState_Connected; + } bool SocketImpl::Receive(SocketHandle handle, void* buffer, int length, int* read, SocketError* error) { diff --git a/src/Nazara/Network/Win32/SocketImpl.hpp b/src/Nazara/Network/Win32/SocketImpl.hpp index ef49cd14d..36ba874ee 100644 --- a/src/Nazara/Network/Win32/SocketImpl.hpp +++ b/src/Nazara/Network/Win32/SocketImpl.hpp @@ -40,7 +40,6 @@ namespace Nz static void Close(SocketHandle handle); static SocketState Connect(SocketHandle handle, const IpAddress& address, SocketError* error); - static SocketState Connect(SocketHandle handle, const IpAddress& address, UInt64 msTimeout, SocketError* error); static bool Initialize(); @@ -61,6 +60,7 @@ namespace Nz static std::size_t QuerySendBufferSize(SocketHandle handle, SocketError* error = nullptr); static unsigned int Poll(PollSocket* fdarray, std::size_t nfds, int timeout, SocketError* error); + static SocketState PollConnection(SocketHandle handle, const IpAddress& address, UInt64 msTimeout, SocketError* error); static bool Receive(SocketHandle handle, void* buffer, int length, int* read, SocketError* error); static bool ReceiveFrom(SocketHandle handle, void* buffer, int length, IpAddress* from, int* read, SocketError* error); From aa9bec6e5e466a95d3632323961256175a5019bf Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 1 Oct 2018 23:05:14 +0200 Subject: [PATCH 170/194] Network/TcpClient: Revert to previous behavior on failure --- ChangeLog.md | 1 - src/Nazara/Network/TcpClient.cpp | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 01a31cf2a..7582edc12 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -147,7 +147,6 @@ Nazara Engine: - ⚠️ CullingList now handles full and partial visibility testing - Added math class Angle, capable of handling both degrees and radians angles and converting them to euler angles/quaternions to improve 2D interface. - ⚠️ AbstractSocket::OnStateChange has been replaced by OnStateChanged, which is now called after state has been changed (with oldState and newState as parameters). -- ⚠️ TcpClient::WaitForconnected now closes the socket on failure. - ⚠️ TcpClient::WaitForconnected now returns the new socket state. - Added TcpClient::PollForConnected diff --git a/src/Nazara/Network/TcpClient.cpp b/src/Nazara/Network/TcpClient.cpp index 9b43fbea0..de8e2771d 100644 --- a/src/Nazara/Network/TcpClient.cpp +++ b/src/Nazara/Network/TcpClient.cpp @@ -502,7 +502,10 @@ namespace Nz // Prevent valid stats in non-connected state if (newState == SocketState_NotConnected) - Close(); + { + m_openMode = OpenMode_NotOpen; + m_peerAddress = IpAddress::Invalid; + } UpdateState(newState); return newState; From 34787d676632037d5fa137e941ae64fde5916446 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 1 Oct 2018 23:10:25 +0200 Subject: [PATCH 171/194] Network/SocketImpl: Fix linux build --- src/Nazara/Network/Posix/SocketImpl.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Nazara/Network/Posix/SocketImpl.cpp b/src/Nazara/Network/Posix/SocketImpl.cpp index 8bccda0db..af0b5557f 100644 --- a/src/Nazara/Network/Posix/SocketImpl.cpp +++ b/src/Nazara/Network/Posix/SocketImpl.cpp @@ -420,7 +420,7 @@ namespace Nz tv.tv_sec = static_cast(msTimeout / 1000ULL); tv.tv_usec = static_cast((msTimeout % 1000ULL) * 1000ULL); - int ret = ::select(0, nullptr, &localSet, &localSet, (msTimeout >= 0 && msTimeout != std::numeric_limits::max()) ? &tv : nullptr); + int ret = ::select(0, nullptr, &localSet, &localSet, (msTimeout != std::numeric_limits::max()) ? &tv : nullptr); if (ret > 0) { int code = GetLastErrorCode(handle, error); @@ -430,7 +430,7 @@ namespace Nz if (code) { if (error) - *error = TranslateWSAErrorToSocketError(code); + *error = TranslateErrnoToSocketError(code); return SocketState_NotConnected; } @@ -450,7 +450,7 @@ namespace Nz else { if (error) - *error = TranslateWSAErrorToSocketError(WSAGetLastError()); + *error = TranslateErrnoToSocketError(GetLastErrorCode()); return SocketState_NotConnected; } From 5108eb8906626398cf7a746e603fb1c08dd5f59c Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 1 Oct 2018 23:14:02 +0200 Subject: [PATCH 172/194] Sdk/EntityOwner: Make Entity* constructor implicit --- ChangeLog.md | 1 + SDK/include/NDK/EntityOwner.hpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index 7582edc12..c559d14b2 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -214,6 +214,7 @@ Nazara Development Kit: - Added BaseWidget::ForEachWidgetChild - Added experimental BoxLayout class - RenderSystem now resolve skinning before render +- EntityOwner constructor taking a Entity* is no longer explicit # 0.4: diff --git a/SDK/include/NDK/EntityOwner.hpp b/SDK/include/NDK/EntityOwner.hpp index fb32f0780..0be491058 100644 --- a/SDK/include/NDK/EntityOwner.hpp +++ b/SDK/include/NDK/EntityOwner.hpp @@ -15,7 +15,7 @@ namespace Ndk { public: EntityOwner() = default; - explicit EntityOwner(Entity* entity); + EntityOwner(Entity* entity); EntityOwner(const EntityOwner& handle) = delete; EntityOwner(EntityOwner&& handle) noexcept = default; ~EntityOwner(); From 7f2826f192753fe451b042a959bb7c91693b05b1 Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 5 Oct 2018 19:53:35 +0200 Subject: [PATCH 173/194] Graphics/CullingList: Fix visibility hash being always the same, causing visibility issues --- include/Nazara/Graphics/CullingList.inl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/Nazara/Graphics/CullingList.inl b/include/Nazara/Graphics/CullingList.inl index 1230ce9e9..5e924d013 100644 --- a/include/Nazara/Graphics/CullingList.inl +++ b/include/Nazara/Graphics/CullingList.inl @@ -35,7 +35,7 @@ namespace Nz { case IntersectionSide_Inside: m_fullyVisibleResults.push_back(entry.renderable); - CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); + fullyVisibleHash = CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); forcedInvalidation = forcedInvalidation | entry.forceInvalidation; entry.forceInvalidation = false; @@ -43,7 +43,7 @@ namespace Nz case IntersectionSide_Intersecting: m_partiallyVisibleResults.push_back(entry.renderable); - CombineHash(partiallyVisibleHash, std::hash()(entry.renderable)); + partiallyVisibleHash = CombineHash(partiallyVisibleHash, std::hash()(entry.renderable)); forcedInvalidation = forcedInvalidation | entry.forceInvalidation; entry.forceInvalidation = false; @@ -72,7 +72,7 @@ namespace Nz { case IntersectionSide_Inside: m_fullyVisibleResults.push_back(entry.renderable); - CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); + fullyVisibleHash = CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); forcedInvalidation = forcedInvalidation | entry.forceInvalidation; entry.forceInvalidation = false; @@ -80,7 +80,7 @@ namespace Nz case IntersectionSide_Intersecting: m_partiallyVisibleResults.push_back(entry.renderable); - CombineHash(partiallyVisibleHash, std::hash()(entry.renderable)); + partiallyVisibleHash = CombineHash(partiallyVisibleHash, std::hash()(entry.renderable)); forcedInvalidation = forcedInvalidation | entry.forceInvalidation; entry.forceInvalidation = false; @@ -97,7 +97,7 @@ namespace Nz { case IntersectionSide_Inside: m_fullyVisibleResults.push_back(entry.renderable); - CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); + fullyVisibleHash = CombineHash(fullyVisibleHash, std::hash()(entry.renderable)); forcedInvalidation = forcedInvalidation | entry.forceInvalidation; entry.forceInvalidation = false; @@ -105,7 +105,7 @@ namespace Nz case IntersectionSide_Intersecting: m_partiallyVisibleResults.push_back(entry.renderable); - CombineHash(partiallyVisibleHash, std::hash()(entry.renderable)); + partiallyVisibleHash = CombineHash(partiallyVisibleHash, std::hash()(entry.renderable)); forcedInvalidation = forcedInvalidation | entry.forceInvalidation; entry.forceInvalidation = false; From f02f206affd1de217393954475e93b91d74427a3 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 7 Oct 2018 17:34:46 +0200 Subject: [PATCH 174/194] SDK/PhysicsComponent2D: Allow massless bodies --- ChangeLog.md | 1 + SDK/include/NDK/Components/PhysicsComponent2D.inl | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index c559d14b2..b1da8d24c 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -215,6 +215,7 @@ Nazara Development Kit: - Added experimental BoxLayout class - RenderSystem now resolve skinning before render - EntityOwner constructor taking a Entity* is no longer explicit +- PhysicsComponent2D now allows massless bodies (zero mass) # 0.4: diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.inl b/SDK/include/NDK/Components/PhysicsComponent2D.inl index bd550c41b..b60ac5047 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.inl +++ b/SDK/include/NDK/Components/PhysicsComponent2D.inl @@ -320,7 +320,7 @@ namespace Ndk inline void PhysicsComponent2D::SetMass(float mass) { NazaraAssert(m_object, "Invalid physics object"); - NazaraAssert(mass > 0.f, "Mass should be positive"); + NazaraAssert(mass >= 0.f, "Mass should be positive"); m_object->SetMass(mass); } From dc6fbfc90f3eca2c89cf3f811091bd93c0d6cbce Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 9 Oct 2018 23:20:53 +0200 Subject: [PATCH 175/194] Replace floating point angle by Angle class instance --- .../NDK/Components/PhysicsComponent2D.hpp | 8 ++--- .../NDK/Components/PhysicsComponent2D.inl | 21 ++++-------- SDK/include/NDK/Systems/PhysicsSystem2D.hpp | 2 +- .../NDK/Components/CollisionComponent2D.cpp | 1 - SDK/src/NDK/Systems/PhysicsSystem2D.cpp | 2 +- include/Nazara/Graphics/Billboard.hpp | 7 ++-- include/Nazara/Graphics/Billboard.inl | 8 +++-- include/Nazara/Physics2D/Constraint2D.hpp | 21 ++++++------ include/Nazara/Physics2D/PhysWorld2D.hpp | 3 +- include/Nazara/Physics2D/RigidBody2D.hpp | 1 + src/Nazara/Physics2D/Constraint2D.cpp | 32 +++++++++---------- src/Nazara/Physics2D/PhysWorld2D.cpp | 2 +- src/Nazara/Physics2D/RigidBody2D.cpp | 18 ++++++----- tests/Engine/Graphics/Billboard.cpp | 2 +- tests/Engine/Physics2D/RigidBody2D.cpp | 27 ++++++++-------- tests/SDK/NDK/Systems/PhysicsSystem2D.cpp | 10 +++--- tests/SDK/NDK/Systems/RenderSystem.cpp | 12 +++---- 17 files changed, 87 insertions(+), 90 deletions(-) diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.hpp b/SDK/include/NDK/Components/PhysicsComponent2D.hpp index 74b6d630e..79204fbdd 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.hpp +++ b/SDK/include/NDK/Components/PhysicsComponent2D.hpp @@ -38,25 +38,25 @@ namespace Ndk inline Nz::Rectf GetAABB() const; inline float GetAngularDamping() const; - inline float GetAngularVelocity() const; + inline Nz::RadianAnglef GetAngularVelocity() const; NAZARA_DEPRECATED("Name error, please use GetMassCenter") inline Nz::Vector2f GetCenterOfGravity(Nz::CoordSys coordSys = Nz::CoordSys_Local) const; inline float GetMass() const; inline Nz::Vector2f GetMassCenter(Nz::CoordSys coordSys = Nz::CoordSys_Local) const; inline float GetMomentOfInertia() const; inline Nz::Vector2f GetPosition() const; - inline float GetRotation() const; + inline Nz::RadianAnglef GetRotation() const; inline Nz::Vector2f GetVelocity() const; inline bool IsSleeping() const; inline void SetAngularDamping(float angularDamping); - inline void SetAngularVelocity(float angularVelocity); + inline void SetAngularVelocity(const Nz::RadianAnglef& angularVelocity); inline void SetMass(float mass); inline void SetMassCenter(const Nz::Vector2f& center, Nz::CoordSys coordSys = Nz::CoordSys_Local); inline void SetMomentOfInertia(float moment); inline void SetPosition(const Nz::Vector2f& position); - inline void SetRotation(float rotation); + inline void SetRotation(const Nz::RadianAnglef& rotation); inline void SetVelocity(const Nz::Vector2f& velocity); static ComponentIndex componentIndex; diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.inl b/SDK/include/NDK/Components/PhysicsComponent2D.inl index b60ac5047..075bd0ff3 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.inl +++ b/SDK/include/NDK/Components/PhysicsComponent2D.inl @@ -151,7 +151,7 @@ namespace Ndk * \remark Produces a NazaraAssert if the physics object is invalid */ - inline float PhysicsComponent2D::GetAngularVelocity() const + inline Nz::RadianAnglef PhysicsComponent2D::GetAngularVelocity() const { NazaraAssert(m_object, "Invalid physics object"); @@ -180,7 +180,6 @@ namespace Ndk * * \remark Produces a NazaraAssert if the physics object is invalid */ - inline float PhysicsComponent2D::GetMass() const { NazaraAssert(m_object, "Invalid physics object"); @@ -240,8 +239,7 @@ namespace Ndk * * \remark Produces a NazaraAssert if the physics object is invalid */ - - inline float PhysicsComponent2D::GetRotation() const + inline Nz::RadianAnglef PhysicsComponent2D::GetRotation() const { NazaraAssert(m_object, "Invalid physics object"); @@ -300,8 +298,7 @@ namespace Ndk * * \remark Produces a NazaraAssert if the physics object is invalid */ - - inline void PhysicsComponent2D::SetAngularVelocity(float angularVelocity) + inline void PhysicsComponent2D::SetAngularVelocity(const Nz::RadianAnglef& angularVelocity) { NazaraAssert(m_object, "Invalid physics object"); @@ -313,10 +310,8 @@ namespace Ndk * * \param mass Mass of the object * - * \remark Produces a NazaraAssert if the physics object is invalid - * \remark Produces a NazaraAssert if the mass is negative + * \remark Mass must be positive or zero */ - inline void PhysicsComponent2D::SetMass(float mass) { NazaraAssert(m_object, "Invalid physics object"); @@ -332,13 +327,13 @@ namespace Ndk * * \remark Produces a NazaraAssert if the physics object is invalid */ - inline void PhysicsComponent2D::SetMassCenter(const Nz::Vector2f& center, Nz::CoordSys coordSys) { NazaraAssert(m_object, "Invalid physics object"); m_object->SetMassCenter(center, coordSys); } + /*! * \brief Sets the angular damping or moment of inertia of the physics object * @@ -348,7 +343,6 @@ namespace Ndk * * \see SetAngularDamping */ - inline void PhysicsComponent2D::SetMomentOfInertia(float moment) { NazaraAssert(m_object, "Invalid physics object"); @@ -363,7 +357,6 @@ namespace Ndk * * \remark Produces a NazaraAssert if the physics object is invalid */ - inline void PhysicsComponent2D::SetPosition(const Nz::Vector2f& position) { NazaraAssert(m_object, "Invalid physics object"); @@ -378,8 +371,7 @@ namespace Ndk * * \remark Produces a NazaraAssert if the physics object is invalid */ - - inline void PhysicsComponent2D::SetRotation(float rotation) + inline void PhysicsComponent2D::SetRotation(const Nz::RadianAnglef& rotation) { NazaraAssert(m_object, "Invalid physics object"); @@ -405,7 +397,6 @@ namespace Ndk * \brief Gets the underlying physics object * \return A reference to the physics object */ - inline Nz::RigidBody2D* PhysicsComponent2D::GetRigidBody() { return m_object.get(); diff --git a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp index 0bbe8d907..a919abbd5 100644 --- a/SDK/include/NDK/Systems/PhysicsSystem2D.hpp +++ b/SDK/include/NDK/Systems/PhysicsSystem2D.hpp @@ -24,7 +24,7 @@ namespace Ndk using ContactPostSolveCallback = std::function; using ContactStartCallback = std::function; - using DebugDrawCircleCallback = std::function; + using DebugDrawCircleCallback = std::function; using DebugDrawDotCallback = std::function; using DebugDrawPolygonCallback = std::function; using DebugDrawSegmentCallback = std::function; diff --git a/SDK/src/NDK/Components/CollisionComponent2D.cpp b/SDK/src/NDK/Components/CollisionComponent2D.cpp index fd78e6c97..5cdfd1589 100644 --- a/SDK/src/NDK/Components/CollisionComponent2D.cpp +++ b/SDK/src/NDK/Components/CollisionComponent2D.cpp @@ -24,7 +24,6 @@ namespace Ndk * * \remark Produces a NazaraAssert if the entity has no physics component and has no static body */ - void CollisionComponent2D::SetGeom(Nz::Collider2DRef geom) { m_geom = std::move(geom); diff --git a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp index a5bed6d28..69d6a99b1 100644 --- a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp +++ b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp @@ -181,7 +181,7 @@ namespace Ndk PhysicsComponent2D& phys = entity->GetComponent(); Nz::RigidBody2D* body = phys.GetRigidBody(); - node.SetRotation(Nz::EulerAnglesf(0.f, 0.f, body->GetRotation()), Nz::CoordSys_Global); + node.SetRotation(body->GetRotation(), Nz::CoordSys_Global); node.SetPosition(Nz::Vector3f(body->GetPosition(), node.GetPosition(Nz::CoordSys_Global).z), Nz::CoordSys_Global); } diff --git a/include/Nazara/Graphics/Billboard.hpp b/include/Nazara/Graphics/Billboard.hpp index f875bc23e..1a151ca69 100644 --- a/include/Nazara/Graphics/Billboard.hpp +++ b/include/Nazara/Graphics/Billboard.hpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace Nz { @@ -34,14 +35,14 @@ namespace Nz std::unique_ptr Clone() const override; inline const Color& GetColor() const; - inline float GetRotation() const; + inline const RadianAnglef& GetRotation() const; inline const Vector2f& GetSize() const; inline void SetColor(const Color& color); inline void SetDefaultMaterial(); inline void SetMaterial(MaterialRef material, bool resizeBillboard = true); inline void SetMaterial(std::size_t skinIndex, MaterialRef material, bool resizeBillboard = true); - inline void SetRotation(float rotation); + inline void SetRotation(const RadianAnglef& rotation); inline void SetSize(const Vector2f& size); inline void SetSize(float sizeX, float sizeY); inline void SetTexture(TextureRef texture, bool resizeBillboard = true); @@ -58,7 +59,7 @@ namespace Nz Color m_color; Vector2f m_sinCos; Vector2f m_size; - float m_rotation; + RadianAnglef m_rotation; static BillboardLibrary::LibraryMap s_library; }; diff --git a/include/Nazara/Graphics/Billboard.inl b/include/Nazara/Graphics/Billboard.inl index 6bbf9b143..be1a47918 100644 --- a/include/Nazara/Graphics/Billboard.inl +++ b/include/Nazara/Graphics/Billboard.inl @@ -84,7 +84,7 @@ namespace Nz * \return Current rotation */ - inline float Billboard::GetRotation() const + inline const RadianAnglef& Billboard::GetRotation() const { return m_rotation; } @@ -161,10 +161,12 @@ namespace Nz * \param rotation Rotation for the billboard */ - inline void Billboard::SetRotation(float rotation) + inline void Billboard::SetRotation(const RadianAnglef& rotation) { m_rotation = rotation; - m_sinCos.Set(std::sin(m_rotation), std::cos(m_rotation)); + + auto sincos = rotation.GetSinCos(); + m_sinCos.Set(sincos.first, sincos.second); } /*! diff --git a/include/Nazara/Physics2D/Constraint2D.hpp b/include/Nazara/Physics2D/Constraint2D.hpp index 9b2bf814b..74cded64d 100644 --- a/include/Nazara/Physics2D/Constraint2D.hpp +++ b/include/Nazara/Physics2D/Constraint2D.hpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -95,15 +96,15 @@ namespace Nz class NAZARA_PHYSICS2D_API DampedRotarySpringConstraint2D : public Constraint2D { public: - DampedRotarySpringConstraint2D(RigidBody2D& first, RigidBody2D& second, float restAngle, float stiffness, float damping); + DampedRotarySpringConstraint2D(RigidBody2D& first, RigidBody2D& second, const RadianAnglef& restAngle, float stiffness, float damping); ~DampedRotarySpringConstraint2D() = default; float GetDamping() const; - float GetRestAngle() const; + RadianAnglef GetRestAngle() const; float GetStiffness() const; void SetDamping(float newDamping); - void SetRestAngle(float newAngle); + void SetRestAngle(const RadianAnglef& newAngle); void SetStiffness(float newStiffness); template static DampedRotarySpringConstraint2DRef New(Args&&... args); @@ -200,11 +201,11 @@ namespace Nz RatchetConstraint2D(RigidBody2D& first, RigidBody2D& second, float phase, float ratchet); ~RatchetConstraint2D() = default; - float GetAngle() const; + RadianAnglef GetAngle() const; float GetPhase() const; float GetRatchet() const; - void SetAngle(float angle); + void SetAngle(const RadianAnglef& angle); void SetPhase(float phase); void SetRatchet(float ratchet); @@ -219,14 +220,14 @@ namespace Nz class NAZARA_PHYSICS2D_API RotaryLimitConstraint2D : public Constraint2D { public: - RotaryLimitConstraint2D(RigidBody2D& first, RigidBody2D& second, float minAngle, float maxAngle); + RotaryLimitConstraint2D(RigidBody2D& first, RigidBody2D& second, const RadianAnglef& minAngle, const RadianAnglef& maxAngle); ~RotaryLimitConstraint2D() = default; - float GetMaxAngle() const; - float GetMinAngle() const; + RadianAnglef GetMaxAngle() const; + RadianAnglef GetMinAngle() const; - void SetMaxAngle(float maxAngle); - void SetMinAngle(float minAngle); + void SetMaxAngle(const RadianAnglef& maxAngle); + void SetMinAngle(const RadianAnglef& minAngle); template static RotaryLimitConstraint2DRef New(Args&&... args); }; diff --git a/include/Nazara/Physics2D/PhysWorld2D.hpp b/include/Nazara/Physics2D/PhysWorld2D.hpp index 3e726de00..42e9288a1 100644 --- a/include/Nazara/Physics2D/PhysWorld2D.hpp +++ b/include/Nazara/Physics2D/PhysWorld2D.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -33,7 +34,7 @@ namespace Nz using ContactPostSolveCallback = std::function; using ContactStartCallback = std::function; - using DebugDrawCircleCallback = std::function; + using DebugDrawCircleCallback = std::function; using DebugDrawDotCallback = std::function; using DebugDrawPolygonCallback = std::function; using DebugDrawSegmentCallback = std::function; diff --git a/include/Nazara/Physics2D/RigidBody2D.hpp b/include/Nazara/Physics2D/RigidBody2D.hpp index 30eac8f43..ee5ff3cf0 100644 --- a/include/Nazara/Physics2D/RigidBody2D.hpp +++ b/include/Nazara/Physics2D/RigidBody2D.hpp @@ -64,6 +64,7 @@ namespace Nz inline void SetAngularDamping(float angularDamping); void SetAngularVelocity(float angularVelocity); + void SetFriction(std::size_t shapeIndex, float friction); void SetGeom(Collider2DRef geom, bool recomputeMoment = true); void SetMass(float mass, bool recomputeMoment = true); void SetMassCenter(const Vector2f& center, CoordSys coordSys = CoordSys_Local); diff --git a/src/Nazara/Physics2D/Constraint2D.cpp b/src/Nazara/Physics2D/Constraint2D.cpp index a17119545..c4c92fd4c 100644 --- a/src/Nazara/Physics2D/Constraint2D.cpp +++ b/src/Nazara/Physics2D/Constraint2D.cpp @@ -163,8 +163,8 @@ namespace Nz } - DampedRotarySpringConstraint2D::DampedRotarySpringConstraint2D(RigidBody2D& first, RigidBody2D& second, float restAngle, float stiffness, float damping) : - Constraint2D(first.GetWorld(), cpDampedRotarySpringNew(first.GetHandle(), second.GetHandle(), restAngle, stiffness, damping)) + DampedRotarySpringConstraint2D::DampedRotarySpringConstraint2D(RigidBody2D& first, RigidBody2D& second, const RadianAnglef& restAngle, float stiffness, float damping) : + Constraint2D(first.GetWorld(), cpDampedRotarySpringNew(first.GetHandle(), second.GetHandle(), restAngle.angle, stiffness, damping)) { } @@ -173,7 +173,7 @@ namespace Nz return float(cpDampedRotarySpringGetDamping(m_constraint)); } - float DampedRotarySpringConstraint2D::GetRestAngle() const + RadianAnglef DampedRotarySpringConstraint2D::GetRestAngle() const { return float(cpDampedRotarySpringGetRestAngle(m_constraint)); } @@ -188,9 +188,9 @@ namespace Nz cpDampedSpringSetDamping(m_constraint, newDamping); } - void DampedRotarySpringConstraint2D::SetRestAngle(float newAngle) + void DampedRotarySpringConstraint2D::SetRestAngle(const RadianAnglef& newAngle) { - cpDampedRotarySpringSetRestAngle(m_constraint, newAngle); + cpDampedRotarySpringSetRestAngle(m_constraint, newAngle.angle); } void DampedRotarySpringConstraint2D::SetStiffness(float newStiffness) @@ -317,7 +317,7 @@ namespace Nz { } - float RatchetConstraint2D::GetAngle() const + RadianAnglef RatchetConstraint2D::GetAngle() const { return float(cpRatchetJointGetAngle(m_constraint)); } @@ -332,9 +332,9 @@ namespace Nz return float(cpRatchetJointGetRatchet(m_constraint)); } - void RatchetConstraint2D::SetAngle(float angle) + void RatchetConstraint2D::SetAngle(const RadianAnglef& angle) { - cpRatchetJointSetAngle(m_constraint, angle); + cpRatchetJointSetAngle(m_constraint, angle.angle); } void RatchetConstraint2D::SetPhase(float phase) @@ -348,29 +348,29 @@ namespace Nz } - RotaryLimitConstraint2D::RotaryLimitConstraint2D(RigidBody2D& first, RigidBody2D& second, float minAngle, float maxAngle) : - Constraint2D(first.GetWorld(), cpRotaryLimitJointNew(first.GetHandle(), second.GetHandle(), minAngle, maxAngle)) + RotaryLimitConstraint2D::RotaryLimitConstraint2D(RigidBody2D& first, RigidBody2D& second, const RadianAnglef& minAngle, const RadianAnglef& maxAngle) : + Constraint2D(first.GetWorld(), cpRotaryLimitJointNew(first.GetHandle(), second.GetHandle(), minAngle.angle, maxAngle.angle)) { } - float RotaryLimitConstraint2D::GetMaxAngle() const + RadianAnglef RotaryLimitConstraint2D::GetMaxAngle() const { return float(cpRotaryLimitJointGetMax(m_constraint)); } - float RotaryLimitConstraint2D::GetMinAngle() const + RadianAnglef RotaryLimitConstraint2D::GetMinAngle() const { return float(cpRotaryLimitJointGetMax(m_constraint)); } - void RotaryLimitConstraint2D::SetMaxAngle(float maxAngle) + void RotaryLimitConstraint2D::SetMaxAngle(const RadianAnglef& maxAngle) { - cpRotaryLimitJointSetMax(m_constraint, maxAngle); + cpRotaryLimitJointSetMax(m_constraint, maxAngle.angle); } - void RotaryLimitConstraint2D::SetMinAngle(float minAngle) + void RotaryLimitConstraint2D::SetMinAngle(const RadianAnglef& minAngle) { - cpRotaryLimitJointSetMin(m_constraint, minAngle); + cpRotaryLimitJointSetMin(m_constraint, minAngle.angle); } diff --git a/src/Nazara/Physics2D/PhysWorld2D.cpp b/src/Nazara/Physics2D/PhysWorld2D.cpp index 764ca1cf8..7383510f8 100644 --- a/src/Nazara/Physics2D/PhysWorld2D.cpp +++ b/src/Nazara/Physics2D/PhysWorld2D.cpp @@ -26,7 +26,7 @@ namespace Nz { auto drawOptions = static_cast(userdata); if (drawOptions->circleCallback) - drawOptions->circleCallback(Vector2f(float(pos.x), float(pos.y)), float(angle), float(radius), CpDebugColorToColor(outlineColor), CpDebugColorToColor(fillColor), drawOptions->userdata); + drawOptions->circleCallback(Vector2f(float(pos.x), float(pos.y)), RadianAnglef(float(angle)), float(radius), CpDebugColorToColor(outlineColor), CpDebugColorToColor(fillColor), drawOptions->userdata); } void DrawDot(cpFloat size, cpVect pos, cpSpaceDebugColor color, cpDataPointer userdata) diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index b12bc7e2e..16e737e30 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -185,9 +185,9 @@ namespace Nz return Rectf(Rect(bb.l, bb.b, bb.r - bb.l, bb.t - bb.b)); } - float RigidBody2D::GetAngularVelocity() const + RadianAnglef RigidBody2D::GetAngularVelocity() const + return float(cpBodyGetAngularVelocity(m_handle)); { - return FromRadians(static_cast(cpBodyGetAngularVelocity(m_handle))); } const Collider2DRef& RigidBody2D::GetGeom() const @@ -233,9 +233,9 @@ namespace Nz return Vector2f(static_cast(pos.x), static_cast(pos.y)); } - float RigidBody2D::GetRotation() const + RadianAnglef RigidBody2D::GetRotation() const { - return FromRadians(static_cast(cpBodyGetAngle(m_handle))); + return float(cpBodyGetAngle(m_handle)); } std::size_t RigidBody2D::GetShapeIndex(cpShape* shape) const @@ -283,9 +283,11 @@ namespace Nz return m_isStatic; } - void RigidBody2D::SetAngularVelocity(float angularVelocity) + void RigidBody2D::SetAngularVelocity(const RadianAnglef& angularVelocity) { - cpBodySetAngularVelocity(m_handle, ToRadians(angularVelocity)); + cpBodySetAngularVelocity(m_handle, angularVelocity.angle); + { + assert(shapeIndex < m_shapes.size()); } void RigidBody2D::SetGeom(Collider2DRef geom, bool recomputeMoment) @@ -400,9 +402,9 @@ namespace Nz } } - void RigidBody2D::SetRotation(float rotation) + void RigidBody2D::SetRotation(const RadianAnglef& rotation) { - cpBodySetAngle(m_handle, ToRadians(rotation)); + cpBodySetAngle(m_handle, rotation.angle); if (m_isStatic) { m_world->RegisterPostStep(this, [](Nz::RigidBody2D* body) diff --git a/tests/Engine/Graphics/Billboard.cpp b/tests/Engine/Graphics/Billboard.cpp index 5136e3af6..de0bc8d02 100644 --- a/tests/Engine/Graphics/Billboard.cpp +++ b/tests/Engine/Graphics/Billboard.cpp @@ -20,7 +20,7 @@ SCENARIO("Billboard", "[GRAPHICS][BILLBOARD]") { REQUIRE(billboard.GetColor() == materialColor); REQUIRE(billboard.GetMaterial().Get() == materialRef.Get()); - REQUIRE(billboard.GetRotation() == Approx(0.f)); + REQUIRE(billboard.GetRotation().angle == Approx(0.f)); REQUIRE(billboard.GetSize() == Nz::Vector2f(64.f, 64.f)); // Default sizes } diff --git a/tests/Engine/Physics2D/RigidBody2D.cpp b/tests/Engine/Physics2D/RigidBody2D.cpp index e801cc849..421a2b083 100644 --- a/tests/Engine/Physics2D/RigidBody2D.cpp +++ b/tests/Engine/Physics2D/RigidBody2D.cpp @@ -125,12 +125,12 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") THEN("We expect those to be true") { CHECK(body.GetAABB() == aabb); - CHECK(body.GetAngularVelocity() == Approx(0.f)); + CHECK(body.GetAngularVelocity() == 0.f); CHECK(body.GetMassCenter() == Nz::Vector2f::Zero()); CHECK(body.GetGeom() == box); CHECK(body.GetMass() == Approx(mass)); CHECK(body.GetPosition() == position); - CHECK(body.GetRotation() == Approx(0.f)); + CHECK(body.GetRotation().angle == Approx(0.f)); CHECK(body.GetUserdata() == &userData); CHECK(body.GetVelocity() == Nz::Vector2f::Zero()); @@ -166,39 +166,38 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") WHEN("We set an angular velocity") { - float angularSpeed = Nz::FromDegrees(90.f); + Nz::RadianAnglef angularSpeed = Nz::RadianAnglef(Nz::DegreeToRadian(90.f)); body.SetAngularVelocity(angularSpeed); world.Step(1.f); THEN("We expect those to be true") { - CHECK(body.GetAngularVelocity() == Approx(angularSpeed)); - CHECK(body.GetRotation() == Approx(angularSpeed)); + CHECK(body.GetAngularVelocity() == angularSpeed); + CHECK(body.GetRotation() == angularSpeed); CHECK(body.GetAABB() == Nz::Rectf(-6.f, 3.f, 2.f, 1.f)); world.Step(1.f); - CHECK(body.GetRotation() == Approx(2.f * angularSpeed)); + CHECK(body.GetRotation() == 2.f * angularSpeed); CHECK(body.GetAABB() == Nz::Rectf(-4.f, -6.f, 1.f, 2.f)); world.Step(1.f); - CHECK(body.GetRotation() == Approx(3.f * angularSpeed)); + CHECK(body.GetRotation() == 3.f * angularSpeed); CHECK(body.GetAABB() == Nz::Rectf(4.f, -4.f, 2.f, 1.f)); world.Step(1.f); - CHECK(body.GetRotation() == Approx(4.f * angularSpeed)); + CHECK(body.GetRotation() == 4.f * angularSpeed); } } WHEN("We apply a torque") { - float angularSpeed = Nz::DegreeToRadian(90.f); - body.AddTorque(angularSpeed); + body.AddTorque(Nz::DegreeToRadian(90.f)); world.Step(1.f); THEN("It is also counter-clockwise") { - CHECK(body.GetAngularVelocity() >= 0.f); - CHECK(body.GetRotation() >= 0.f); + CHECK(body.GetAngularVelocity().angle >= 0.f); + CHECK(body.GetRotation().angle >= 0.f); } } } @@ -316,13 +315,13 @@ Nz::RigidBody2D CreateBody(Nz::PhysWorld2D& world) void EQUALITY(const Nz::RigidBody2D& left, const Nz::RigidBody2D& right) { CHECK(left.GetAABB() == right.GetAABB()); - CHECK(left.GetAngularVelocity() == Approx(right.GetAngularVelocity())); + CHECK(left.GetAngularVelocity() == right.GetAngularVelocity()); CHECK(left.GetMassCenter() == right.GetMassCenter()); CHECK(left.GetGeom() == right.GetGeom()); CHECK(left.GetHandle() != right.GetHandle()); CHECK(left.GetMass() == Approx(right.GetMass())); CHECK(left.GetPosition() == right.GetPosition()); - CHECK(left.GetRotation() == Approx(right.GetRotation())); + CHECK(left.GetRotation().angle == Approx(right.GetRotation().angle)); CHECK(left.GetUserdata() == right.GetUserdata()); CHECK(left.GetVelocity() == right.GetVelocity()); } diff --git a/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp b/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp index 33871be57..bb6bf250a 100644 --- a/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp +++ b/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp @@ -85,15 +85,15 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") WHEN("We make rotate our entity") { - float angularSpeed = Nz::FromDegrees(45.f); + Nz::RadianAnglef angularSpeed = Nz::DegreeToRadian(45.f); physicsComponent2D.SetAngularVelocity(angularSpeed); world.Update(2.f); THEN("It should have been rotated") { - CHECK(physicsComponent2D.GetAngularVelocity() == Approx(angularSpeed)); + CHECK(physicsComponent2D.GetAngularVelocity() == angularSpeed); CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(-2.f, 0.f, 2.f, 1.f)); - CHECK(physicsComponent2D.GetRotation() == Approx(Nz::FromDegrees(90.f))); + CHECK(physicsComponent2D.GetRotation() == Nz::RadianAnglef(Nz::DegreeToRadian(90.f))); CHECK(nodeComponent.GetRotation().ToEulerAngles().roll == Approx(Nz::FromDegrees(90.f))); } } @@ -129,7 +129,7 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") WHEN("We make rotate our entity") { - float angularSpeed = Nz::FromDegrees(45.f); + Nz::RadianAnglef angularSpeed(Nz::DegreeToRadian(45.f)); physicsComponent2D.SetAngularVelocity(angularSpeed); world.Update(2.f); @@ -137,7 +137,7 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") { CHECK(physicsComponent2D.GetAngularVelocity() == angularSpeed); CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(1.f, 4.f, 2.f, 1.f)); - CHECK(physicsComponent2D.GetRotation() == Approx(Nz::FromDegrees(90.f))); + CHECK(physicsComponent2D.GetRotation() == 2.f * angularSpeed); CHECK(nodeComponent.GetPosition() == position); CHECK(nodeComponent.GetRotation().ToEulerAngles().roll == Approx(Nz::FromDegrees(90.f))); } diff --git a/tests/SDK/NDK/Systems/RenderSystem.cpp b/tests/SDK/NDK/Systems/RenderSystem.cpp index 09fb6add2..d68f544ab 100644 --- a/tests/SDK/NDK/Systems/RenderSystem.cpp +++ b/tests/SDK/NDK/Systems/RenderSystem.cpp @@ -82,29 +82,29 @@ SCENARIO("RenderSystem", "[NDK][RenderSystem]") WHEN("We set an angular velocity") { - float angularSpeed = Nz::FromDegrees(90.f); + Nz::RadianAnglef angularSpeed(Nz::DegreeToRadian(90.f)); physicsComponent2D.SetAngularVelocity(angularSpeed); world.Update(1.f); THEN("We expect those to be true") { - CHECK(physicsComponent2D.GetAngularVelocity() == Approx(angularSpeed)); - CHECK(physicsComponent2D.GetRotation() == Approx(angularSpeed)); + CHECK(physicsComponent2D.GetAngularVelocity() == angularSpeed); + CHECK(physicsComponent2D.GetRotation() == angularSpeed); CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(1.f, 4.f, 2.f, 1.f)); CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetAABB()); world.Update(1.f); - CHECK(physicsComponent2D.GetRotation() == Approx(2.f * angularSpeed)); + CHECK(physicsComponent2D.GetRotation() == 2.f * angularSpeed); CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(2.f, 2.f, 1.f, 2.f)); CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetAABB()); world.Update(1.f); - CHECK(physicsComponent2D.GetRotation() == Approx(3.f * angularSpeed)); + CHECK(physicsComponent2D.GetRotation() == 3.f * angularSpeed); CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(3.f, 3.f, 2.f, 1.f)); CompareAABB(physicsComponent2D.GetAABB(), graphicsComponent.GetAABB()); world.Update(1.f); - CHECK(physicsComponent2D.GetRotation() == Approx(4.f * angularSpeed)); + CHECK(physicsComponent2D.GetRotation() == 4.f * angularSpeed); } } } From 30348525d7b2fe0ae43a68f6f358d47c18a8b69c Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 9 Oct 2018 23:22:28 +0200 Subject: [PATCH 176/194] Physics2D: Expose elasticity/friction/surface velocity --- .../NDK/Components/PhysicsComponent2D.hpp | 10 ++ .../NDK/Components/PhysicsComponent2D.inl | 150 +++++++++++++++++- include/Nazara/Physics2D/Collider2D.hpp | 13 +- include/Nazara/Physics2D/Collider2D.inl | 39 ++++- include/Nazara/Physics2D/RigidBody2D.hpp | 19 ++- include/Nazara/Physics2D/RigidBody2D.inl | 5 + src/Nazara/Physics2D/Collider2D.cpp | 5 +- src/Nazara/Physics2D/RigidBody2D.cpp | 67 +++++++- 8 files changed, 294 insertions(+), 14 deletions(-) diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.hpp b/SDK/include/NDK/Components/PhysicsComponent2D.hpp index 79204fbdd..a652ceec6 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.hpp +++ b/SDK/include/NDK/Components/PhysicsComponent2D.hpp @@ -41,22 +41,32 @@ namespace Ndk inline Nz::RadianAnglef GetAngularVelocity() const; NAZARA_DEPRECATED("Name error, please use GetMassCenter") inline Nz::Vector2f GetCenterOfGravity(Nz::CoordSys coordSys = Nz::CoordSys_Local) const; + inline float GetElasticity(std::size_t shapeIndex = 0) const; + inline float GetFriction(std::size_t shapeIndex = 0) const; inline float GetMass() const; inline Nz::Vector2f GetMassCenter(Nz::CoordSys coordSys = Nz::CoordSys_Local) const; inline float GetMomentOfInertia() const; inline Nz::Vector2f GetPosition() const; inline Nz::RadianAnglef GetRotation() const; + inline Nz::Vector2f GetSurfaceVelocity(std::size_t shapeIndex = 0) const; + inline std::size_t GetShapeCount() const; inline Nz::Vector2f GetVelocity() const; inline bool IsSleeping() const; inline void SetAngularDamping(float angularDamping); inline void SetAngularVelocity(const Nz::RadianAnglef& angularVelocity); + inline void SetElasticity(float elasticity); + inline void SetElasticity(std::size_t shapeIndex, float friction); + inline void SetFriction(float friction); + inline void SetFriction(std::size_t shapeIndex, float friction); inline void SetMass(float mass); inline void SetMassCenter(const Nz::Vector2f& center, Nz::CoordSys coordSys = Nz::CoordSys_Local); inline void SetMomentOfInertia(float moment); inline void SetPosition(const Nz::Vector2f& position); inline void SetRotation(const Nz::RadianAnglef& rotation); + inline void SetSurfaceVelocity(const Nz::Vector2f& velocity); + inline void SetSurfaceVelocity(std::size_t shapeIndex, const Nz::Vector2f& velocity); inline void SetVelocity(const Nz::Vector2f& velocity); static ComponentIndex componentIndex; diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.inl b/SDK/include/NDK/Components/PhysicsComponent2D.inl index 075bd0ff3..8af4356f4 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.inl +++ b/SDK/include/NDK/Components/PhysicsComponent2D.inl @@ -174,6 +174,36 @@ namespace Ndk return m_object->GetMassCenter(coordSys); } + /*! + * \brief Gets the elasticity of a shape belonging to this physics object + * \return Elasticity of the shape + * + * \param shapeIndex Shape index of the collider we're interested + * + * \remark Produces a NazaraAssert if the physics object is invalid + */ + inline float PhysicsComponent2D::GetElasticity(std::size_t shapeIndex) const + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->GetElasticity(shapeIndex); + } + + /*! + * \brief Gets the friction of a shape belonging to this physics object + * \return Friction of the shape + * + * \param shapeIndex Shape index of the collider we're interested + * + * \remark Produces a NazaraAssert if the physics object is invalid + */ + inline float PhysicsComponent2D::GetFriction(std::size_t shapeIndex) const + { + NazaraAssert(m_object, "Invalid physics object"); + + return m_object->GetFriction(shapeIndex); + } + /*! * \brief Gets the mass of the physics object * \return Mass of the object @@ -246,6 +276,30 @@ namespace Ndk return m_object->GetRotation(); } + /*! + * \brief Gets the surface velocity of a shape belonging to this physics object + * \return Surface velocity of the shape + * + * \param shapeIndex Shape index of the collider we're interested + * + * \remark Produces a NazaraAssert if the physics object is invalid + */ + inline Nz::Vector2f PhysicsComponent2D::GetSurfaceVelocity(std::size_t shapeIndex) const +{ + return m_object->GetSurfaceVelocity(shapeIndex); + } + + /*! + * \brief Gets the rotation of the physics object + * \return Shape count of the object + * + * \remark Produces a NazaraAssert if the physics object is invalid + */ + inline std::size_t PhysicsComponent2D::GetShapeCount() const + { + return m_object->GetShapeCount(); + } + /*! * \brief Gets the velocity of the physics object * \return Velocity of the object @@ -305,6 +359,72 @@ namespace Ndk m_object->SetAngularVelocity(angularVelocity); } + /*! + * \brief Sets the elasticity of the whole physics object + * + * Overrides all shapes elasticity with a single value + * + * \param elasticity Elasticity to be applied + * + * \remark Elasticity must be positive or zero + */ + inline void PhysicsComponent2D::SetElasticity(float elasticity) + { + NazaraAssert(m_object, "Invalid physics object"); + NazaraAssert(elasticity >= 0.f, "Friction must be positive"); + + m_object->SetElasticity(elasticity); + } + + /*! + * \brief Sets the elasticity of a single shape of the physics object + * + * \param shapeIndex Target shape index + * \param elasticity Elasticity to be applied + * + * \remark Elasticity must be positive or zero + */ + inline void PhysicsComponent2D::SetElasticity(std::size_t shapeIndex, float elasticity) + { + NazaraAssert(m_object, "Invalid physics object"); + NazaraAssert(elasticity >= 0.f, "Friction must be positive"); + + m_object->SetElasticity(shapeIndex, elasticity); + } + + /*! + * \brief Sets the friction of the whole physics object + * + * Overrides all shapes friction with a single value + * + * \param friction Friction to be applied + * + * \remark Friction must be positive or zero + */ + inline void PhysicsComponent2D::SetFriction(float friction) + { + NazaraAssert(m_object, "Invalid physics object"); + NazaraAssert(friction >= 0.f, "Friction must be positive"); + + m_object->SetFriction(friction); + } + + /*! + * \brief Sets the friction of a single shape of the physics object + * + * \param shapeIndex Target shape index + * \param friction Friction to be applied + * + * \remark Friction must be positive or zero + */ + inline void PhysicsComponent2D::SetFriction(std::size_t shapeIndex, float friction) + { + NazaraAssert(m_object, "Invalid physics object"); + NazaraAssert(friction >= 0.f, "Friction must be positive"); + + m_object->SetFriction(shapeIndex, friction); + } + /*! * \brief Sets the mass of the physics object * @@ -378,14 +498,38 @@ namespace Ndk m_object->SetRotation(rotation); } + /*! + * \brief Sets the surface velocity of the whole physics object + * + * Overrides all shapes surface velocity with a single value + * + * \param velocity Surface velocity to be applied + */ + inline void PhysicsComponent2D::SetSurfaceVelocity(const Nz::Vector2f& velocity) + { + NazaraAssert(m_object, "Invalid physics object"); + + m_object->SetSurfaceVelocity(velocity); + } + + /*! + * \brief Sets the surface velocity of a single shape of the physics object + * + * \param shapeIndex Target shape index + * \param velocity Surface velocity to be applied + */ + inline void PhysicsComponent2D::SetSurfaceVelocity(std::size_t shapeIndex, const Nz::Vector2f& velocity) + { + NazaraAssert(m_object, "Invalid physics object"); + + m_object->SetSurfaceVelocity(shapeIndex, velocity); + } + /*! * \brief Sets the velocity of the physics object * * \param velocity Velocity of the object - * - * \remark Produces a NazaraAssert if the physics object is invalid */ - inline void PhysicsComponent2D::SetVelocity(const Nz::Vector2f& velocity) { NazaraAssert(m_object, "Invalid physics object"); diff --git a/include/Nazara/Physics2D/Collider2D.hpp b/include/Nazara/Physics2D/Collider2D.hpp index 36443e66a..8b69bd780 100644 --- a/include/Nazara/Physics2D/Collider2D.hpp +++ b/include/Nazara/Physics2D/Collider2D.hpp @@ -47,6 +47,9 @@ namespace Nz inline UInt32 GetCollisionGroup() const; inline unsigned int GetCollisionId() const; inline UInt32 GetCollisionMask() const; + inline float GetElasticity() const; + inline float GetFriction() const; + inline Vector2f GetSurfaceVelocity() const; virtual ColliderType2D GetType() const = 0; @@ -56,6 +59,9 @@ namespace Nz inline void SetCollisionGroup(UInt32 groupId); inline void SetCollisionId(unsigned int typeId); inline void SetCollisionMask(UInt32 mask); + inline void SetElasticity(float elasticity); + inline void SetFriction(float friction); + inline void SetSurfaceVelocity(const Vector2f& surfaceVelocity); inline void SetTrigger(bool trigger); Collider2D& operator=(const Collider2D&) = delete; @@ -67,11 +73,14 @@ namespace Nz protected: virtual std::size_t CreateShapes(RigidBody2D* body, std::vector* shapes) const = 0; - bool m_trigger; UInt32 m_categoryMask; UInt32 m_collisionGroup; - unsigned int m_collisionId; UInt32 m_collisionMask; + Vector2f m_surfaceVelocity; + bool m_trigger; + float m_elasticity; + float m_friction; + unsigned int m_collisionId; private: virtual std::size_t GenerateShapes(RigidBody2D* body, std::vector* shapes) const; diff --git a/include/Nazara/Physics2D/Collider2D.inl b/include/Nazara/Physics2D/Collider2D.inl index 71ae0603c..2142ba47e 100644 --- a/include/Nazara/Physics2D/Collider2D.inl +++ b/include/Nazara/Physics2D/Collider2D.inl @@ -9,11 +9,14 @@ namespace Nz { inline Collider2D::Collider2D() : - m_trigger(false), m_categoryMask(0xFFFFFFFF), m_collisionGroup(0), - m_collisionId(0), - m_collisionMask(0xFFFFFFFF) + m_collisionMask(0xFFFFFFFF), + m_trigger(false), + m_elasticity(0.f), + m_friction(0.f), + m_surfaceVelocity(Vector2f::Zero()), + m_collisionId(0) { } @@ -37,6 +40,21 @@ namespace Nz return m_collisionMask; } + inline float Collider2D::GetElasticity() const + { + return m_elasticity; + } + + inline float Collider2D::GetFriction() const + { + return m_friction; + } + + inline Vector2f Collider2D::GetSurfaceVelocity() const + { + return m_surfaceVelocity; + } + inline bool Collider2D::IsTrigger() const { return m_trigger; @@ -62,6 +80,21 @@ namespace Nz m_collisionMask = mask; } + inline void Collider2D::SetElasticity(float elasticity) + { + m_elasticity = elasticity; + } + + inline void Collider2D::SetFriction(float friction) + { + m_friction = friction; + } + + inline void Collider2D::SetSurfaceVelocity(const Vector2f& surfaceVelocity) + { + m_surfaceVelocity = surfaceVelocity; + } + inline void Collider2D::SetTrigger(bool trigger) { m_trigger = trigger; diff --git a/include/Nazara/Physics2D/RigidBody2D.hpp b/include/Nazara/Physics2D/RigidBody2D.hpp index ee5ff3cf0..b23b97187 100644 --- a/include/Nazara/Physics2D/RigidBody2D.hpp +++ b/include/Nazara/Physics2D/RigidBody2D.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -42,17 +43,21 @@ namespace Nz Rectf GetAABB() const; inline float GetAngularDamping() const; - float GetAngularVelocity() const; + RadianAnglef GetAngularVelocity() const; NAZARA_DEPRECATED("Name error, please use GetMassCenter") inline Vector2f GetCenterOfGravity(CoordSys coordSys = CoordSys_Local) const; + float GetElasticity(std::size_t shapeIndex = 0) const; + float GetFriction(std::size_t shapeIndex = 0) const; const Collider2DRef& GetGeom() const; cpBody* GetHandle() const; float GetMass() const; Vector2f GetMassCenter(CoordSys coordSys = CoordSys_Local) const; float GetMomentOfInertia() const; Vector2f GetPosition() const; - float GetRotation() const; + RadianAnglef GetRotation() const; + inline std::size_t GetShapeCount() const; std::size_t GetShapeIndex(cpShape* shape) const; + Vector2f GetSurfaceVelocity(std::size_t shapeIndex = 0) const; void* GetUserdata() const; Vector2f GetVelocity() const; PhysWorld2D* GetWorld() const; @@ -63,14 +68,19 @@ namespace Nz bool IsStatic() const; inline void SetAngularDamping(float angularDamping); - void SetAngularVelocity(float angularVelocity); + void SetAngularVelocity(const RadianAnglef& angularVelocity); + void SetElasticity(float elasticity); + void SetElasticity(std::size_t shapeIndex, float elasticity); + void SetFriction(float friction); void SetFriction(std::size_t shapeIndex, float friction); void SetGeom(Collider2DRef geom, bool recomputeMoment = true); void SetMass(float mass, bool recomputeMoment = true); void SetMassCenter(const Vector2f& center, CoordSys coordSys = CoordSys_Local); void SetMomentOfInertia(float moment); void SetPosition(const Vector2f& position); - void SetRotation(float rotation); + void SetRotation(const RadianAnglef& rotation); + void SetSurfaceVelocity(const Vector2f& surfaceVelocity); + void SetSurfaceVelocity(std::size_t shapeIndex, const Vector2f& surfaceVelocity); void SetStatic(bool setStaticBody = true); void SetUserdata(void* ud); void SetVelocity(const Vector2f& velocity); @@ -90,6 +100,7 @@ namespace Nz void UnregisterFromSpace(); static void CopyBodyData(cpBody* from, cpBody* to); + static void CopyShapeData(cpShape* from, cpShape* to); std::vector m_shapes; Collider2DRef m_geom; diff --git a/include/Nazara/Physics2D/RigidBody2D.inl b/include/Nazara/Physics2D/RigidBody2D.inl index faebd017d..a654c03e7 100644 --- a/include/Nazara/Physics2D/RigidBody2D.inl +++ b/include/Nazara/Physics2D/RigidBody2D.inl @@ -17,6 +17,11 @@ namespace Nz return GetMassCenter(coordSys); } + inline std::size_t RigidBody2D::GetShapeCount() const + { + return m_shapes.size(); + } + inline void RigidBody2D::SetAngularDamping(float angularDamping) { SetMomentOfInertia(angularDamping); diff --git a/src/Nazara/Physics2D/Collider2D.cpp b/src/Nazara/Physics2D/Collider2D.cpp index 5f0e9bcfe..0be746838 100644 --- a/src/Nazara/Physics2D/Collider2D.cpp +++ b/src/Nazara/Physics2D/Collider2D.cpp @@ -20,9 +20,12 @@ namespace Nz { cpShape* shape = (*shapes)[i]; + cpShapeSetCollisionType(shape, cpFloat(m_collisionId)); + cpShapeSetElasticity(shape, cpFloat(m_elasticity)); cpShapeSetFilter(shape, filter); - cpShapeSetCollisionType(shape, m_collisionId); + cpShapeSetFriction(shape, cpFloat(m_friction)); cpShapeSetSensor(shape, (m_trigger) ? cpTrue : cpFalse); + cpShapeSetSurfaceVelocity(shape, cpv(cpFloat(m_surfaceVelocity.x), cpFloat(m_surfaceVelocity.y))); } return shapeCount; diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index 16e737e30..99013467e 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -52,7 +52,10 @@ namespace Nz CopyBodyData(object.GetHandle(), m_handle); for (std::size_t i = 0; i < m_shapes.size(); ++i) + { + CopyShapeData(object.m_shapes[i], m_shapes[i]); m_shapes[i]->bb = cpShapeCacheBB(object.m_shapes[i]); + } } RigidBody2D::RigidBody2D(RigidBody2D&& object) : @@ -186,8 +189,20 @@ namespace Nz } RadianAnglef RigidBody2D::GetAngularVelocity() const - return float(cpBodyGetAngularVelocity(m_handle)); { + return float(cpBodyGetAngularVelocity(m_handle)); + } + + float Nz::RigidBody2D::GetElasticity(std::size_t shapeIndex) const + { + assert(shapeIndex < m_shapes.size()); + return float(cpShapeGetElasticity(m_shapes[shapeIndex])); + } + + float Nz::RigidBody2D::GetFriction(std::size_t shapeIndex) const + { + assert(shapeIndex < m_shapes.size()); + return float(cpShapeGetFriction(m_shapes[shapeIndex])); } const Collider2DRef& RigidBody2D::GetGeom() const @@ -247,6 +262,13 @@ namespace Nz return std::distance(m_shapes.begin(), it); } + Vector2f Nz::RigidBody2D::GetSurfaceVelocity(std::size_t shapeIndex) const + { + assert(shapeIndex < m_shapes.size()); + cpVect vel = cpShapeGetSurfaceVelocity(m_shapes[shapeIndex]); + return Vector2f(static_cast(vel.x), static_cast(vel.y)); + } + void* RigidBody2D::GetUserdata() const { return m_userData; @@ -286,8 +308,32 @@ namespace Nz void RigidBody2D::SetAngularVelocity(const RadianAnglef& angularVelocity) { cpBodySetAngularVelocity(m_handle, angularVelocity.angle); + } + + void RigidBody2D::SetElasticity(float friction) + { + cpFloat frict(friction); + for (cpShape* shape : m_shapes) + cpShapeSetElasticity(shape, frict); + } + + void RigidBody2D::SetElasticity(std::size_t shapeIndex, float friction) { assert(shapeIndex < m_shapes.size()); + cpShapeSetElasticity(m_shapes[shapeIndex], cpFloat(friction)); + } + + void RigidBody2D::SetFriction(float friction) + { + cpFloat frict(friction); + for (cpShape* shape : m_shapes) + cpShapeSetFriction(shape, frict); + } + + void RigidBody2D::SetFriction(std::size_t shapeIndex, float friction) + { + assert(shapeIndex < m_shapes.size()); + cpShapeSetFriction(m_shapes[shapeIndex], cpFloat(friction)); } void RigidBody2D::SetGeom(Collider2DRef geom, bool recomputeMoment) @@ -414,6 +460,19 @@ namespace Nz } } + void RigidBody2D::SetSurfaceVelocity(const Vector2f& surfaceVelocity) + { + Vector2 velocity(surfaceVelocity.x, surfaceVelocity.y); + for (cpShape* shape : m_shapes) + cpShapeSetSurfaceVelocity(shape, cpv(velocity.x, velocity.y)); + } + + void RigidBody2D::SetSurfaceVelocity(std::size_t shapeIndex, const Vector2f& surfaceVelocity) + { + assert(shapeIndex < m_shapes.size()); + cpShapeSetSurfaceVelocity(m_shapes[shapeIndex], cpv(cpFloat(surfaceVelocity.x), cpFloat(surfaceVelocity.y))); + } + void RigidBody2D::SetStatic(bool setStaticBody) { m_isStatic = setStaticBody; @@ -549,4 +608,10 @@ namespace Nz cpBodySetVelocity(to, cpBodyGetVelocity(from)); } + void RigidBody2D::CopyShapeData(cpShape* from, cpShape* to) + { + cpShapeSetElasticity(to, cpShapeGetElasticity(from)); + cpShapeSetFriction(to, cpShapeGetFriction(from)); + cpShapeSetSurfaceVelocity(to, cpShapeGetSurfaceVelocity(from)); + } } From a24944d103f50edbf3f5d17732bc7ad880d1bd14 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 9 Oct 2018 23:22:50 +0200 Subject: [PATCH 177/194] Update changelog --- ChangeLog.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ChangeLog.md b/ChangeLog.md index b1da8d24c..a49c7d583 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -149,7 +149,9 @@ Nazara Engine: - ⚠️ AbstractSocket::OnStateChange has been replaced by OnStateChanged, which is now called after state has been changed (with oldState and newState as parameters). - ⚠️ TcpClient::WaitForconnected now returns the new socket state. - Added TcpClient::PollForConnected - +- ⚠️ Use of the new Angle class instead of floating point angle +- It is now possible to set elasticity/friction/surface bodies of 2D colliders and change it at runtime on RigidBody2D + Nazara Development Kit: - Added ImageWidget (#139) - ⚠️ Removed TextAreaWidget::GetLineCount @@ -216,6 +218,7 @@ Nazara Development Kit: - RenderSystem now resolve skinning before render - EntityOwner constructor taking a Entity* is no longer explicit - PhysicsComponent2D now allows massless bodies (zero mass) +- ⚠️ Use of the new Angle class instead of floating point angle # 0.4: From 56922001ba17c202af0c09f65ee24d60252fd755 Mon Sep 17 00:00:00 2001 From: S6066 Date: Tue, 9 Oct 2018 23:23:22 +0200 Subject: [PATCH 178/194] Widgets Fixes (#190) * CheckboxWidget: Check * ImageWidget: Check * LabelWidget: Delete uselessly overridden Layout * ProgressBarWidget: Check --- SDK/include/NDK/Widgets/ImageWidget.hpp | 2 -- SDK/include/NDK/Widgets/LabelWidget.hpp | 2 -- SDK/src/NDK/Widgets/CheckboxWidget.cpp | 12 ++++-------- SDK/src/NDK/Widgets/LabelWidget.cpp | 5 ----- SDK/src/NDK/Widgets/ProgressBarWidget.cpp | 6 ++---- 5 files changed, 6 insertions(+), 21 deletions(-) diff --git a/SDK/include/NDK/Widgets/ImageWidget.hpp b/SDK/include/NDK/Widgets/ImageWidget.hpp index fc36ca298..d95af8623 100644 --- a/SDK/include/NDK/Widgets/ImageWidget.hpp +++ b/SDK/include/NDK/Widgets/ImageWidget.hpp @@ -26,8 +26,6 @@ namespace Ndk //virtual ImageWidget* Clone() const = 0; - void ResizeToContent(); - inline const Nz::Color& GetColor() const; inline const Nz::TextureRef& GetTexture() const; inline const Nz::Rectf& GetTextureCoords() const; diff --git a/SDK/include/NDK/Widgets/LabelWidget.hpp b/SDK/include/NDK/Widgets/LabelWidget.hpp index aea711010..6e3b89ee8 100644 --- a/SDK/include/NDK/Widgets/LabelWidget.hpp +++ b/SDK/include/NDK/Widgets/LabelWidget.hpp @@ -32,8 +32,6 @@ namespace Ndk LabelWidget& operator=(LabelWidget&&) = default; private: - void Layout() override; - EntityHandle m_textEntity; Nz::TextSpriteRef m_textSprite; }; diff --git a/SDK/src/NDK/Widgets/CheckboxWidget.cpp b/SDK/src/NDK/Widgets/CheckboxWidget.cpp index 1bea0c9ce..7ea3969de 100644 --- a/SDK/src/NDK/Widgets/CheckboxWidget.cpp +++ b/SDK/src/NDK/Widgets/CheckboxWidget.cpp @@ -112,20 +112,16 @@ namespace Ndk { BaseWidget::Layout(); - Nz::Vector2f origin = Nz::Vector2f(0.f); Nz::Vector2f checkboxSize = GetCheckboxSize(); Nz::Vector2f borderSize = GetCheckboxBorderSize(); - m_checkboxBorderEntity->GetComponent().SetPosition(origin); - m_checkboxBackgroundEntity->GetComponent().SetPosition(origin + borderSize); + m_checkboxBackgroundEntity->GetComponent().SetPosition(borderSize); Nz::Vector3f checkboxBox = m_checkboxContentSprite->GetBoundingVolume().obb.localBox.GetLengths(); - m_checkboxContentEntity->GetComponent().SetPosition(origin.x + checkboxSize.x / 2.f - checkboxBox.x / 2.f, - origin.y + checkboxSize.y / 2.f - checkboxBox.y / 2.f); + m_checkboxContentEntity->GetComponent().SetPosition(checkboxSize.x / 2.f - checkboxBox.x / 2.f, checkboxSize.y / 2.f - checkboxBox.y / 2.f); Nz::Vector3f textBox = m_textSprite->GetBoundingVolume().obb.localBox.GetLengths(); - m_textEntity->GetComponent().SetPosition(origin.x + checkboxSize.x + (m_adaptativeMargin ? checkboxSize.x / 2.f : m_textMargin), - origin.y + checkboxSize.y / 2.f - textBox.y / 2.f); + m_textEntity->GetComponent().SetPosition(checkboxSize.x + (m_adaptativeMargin ? checkboxSize.x / 2.f : m_textMargin), checkboxSize.y / 2.f - textBox.y / 2.f); } void CheckboxWidget::OnMouseButtonRelease(int x, int y, Nz::Mouse::Button button) @@ -175,7 +171,7 @@ namespace Ndk Nz::Vector3f textSize = m_textSprite->GetBoundingVolume().obb.localBox.GetLengths(); Nz::Vector2f checkboxSize = GetCheckboxSize(); - Nz::Vector2f finalSize{ checkboxSize.x + (m_adaptativeMargin ? checkboxSize.x / 2.f : m_textMargin) + textSize.x, std::max(textSize.y, checkboxSize.y) }; + Nz::Vector2f finalSize { checkboxSize.x + (m_adaptativeMargin ? checkboxSize.x / 2.f : m_textMargin) + textSize.x, std::max(textSize.y, checkboxSize.y) }; SetMinimumSize(finalSize); SetPreferredSize(finalSize); } diff --git a/SDK/src/NDK/Widgets/LabelWidget.cpp b/SDK/src/NDK/Widgets/LabelWidget.cpp index 4c6553011..813295622 100644 --- a/SDK/src/NDK/Widgets/LabelWidget.cpp +++ b/SDK/src/NDK/Widgets/LabelWidget.cpp @@ -19,9 +19,4 @@ namespace Ndk Layout(); } - - void LabelWidget::Layout() - { - BaseWidget::Layout(); - } } diff --git a/SDK/src/NDK/Widgets/ProgressBarWidget.cpp b/SDK/src/NDK/Widgets/ProgressBarWidget.cpp index 3e2f01440..cc3f4f2d9 100644 --- a/SDK/src/NDK/Widgets/ProgressBarWidget.cpp +++ b/SDK/src/NDK/Widgets/ProgressBarWidget.cpp @@ -76,7 +76,6 @@ namespace Ndk void ProgressBarWidget::Layout() { - Nz::Vector2f origin = Nz::Vector2f(0.f); Nz::Vector2f size = GetSize(); Nz::Vector2f progressBarSize = size; @@ -85,7 +84,7 @@ namespace Ndk UpdateText(); Nz::Vector3f textSize = m_textSprite->GetBoundingVolume().obb.localBox.GetLengths(); - m_textEntity->GetComponent().SetPosition(origin.x + size.x - textSize.x, origin.y + size.y / 2.f - textSize.y); + m_textEntity->GetComponent().SetPosition(size.x - textSize.x, size.y / 2.f - textSize.y); progressBarSize -= { textSize.x + m_textMargin, 0.f }; } @@ -96,7 +95,6 @@ namespace Ndk m_barBackgroundSprite->SetSize(progressBarSize - (borderSize * 2.f)); m_barSprite->SetSize((progressBarSize.x - (borderSize.x * 2.f)) / 100.f * static_cast(m_value), progressBarSize.y - (borderSize.y * 2.f)); - m_borderEntity->GetComponent().SetPosition(origin.x, origin.y); - m_barEntity->GetComponent().SetPosition(origin.x + borderSize.x, origin.y + borderSize.y); + m_barEntity->GetComponent().SetPosition(borderSize.x, borderSize.y); } } From 9cc83aafdaf570b73b9671ba3b08ab211e0516fd Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 10 Oct 2018 22:59:57 +0200 Subject: [PATCH 179/194] Math/Angle: Add FromDegrees and FromRadians builders --- include/Nazara/Math/Angle.hpp | 2 ++ include/Nazara/Math/Angle.inl | 24 +++++++++++++++++++++++ tests/Engine/Physics2D/RigidBody2D.cpp | 2 +- tests/SDK/NDK/Systems/PhysicsSystem2D.cpp | 6 +++--- tests/SDK/NDK/Systems/RenderSystem.cpp | 2 +- 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index 74e2b884d..31ea6daeb 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -68,6 +68,8 @@ namespace Nz bool operator==(const Angle& other) const; bool operator!=(const Angle& other) const; + static Angle FromDegrees(T ang); + static Angle FromRadians(T ang); static Angle Zero(); T angle; diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index 354cab93f..b0c52c5a6 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -471,6 +471,30 @@ namespace Nz return !NumberEquals(angle, other.angle, Detail::AngleUtils::template GetEpsilon()); } + /*! + * \brief Builds an Angle instance using a degree angle, converting if needed + * \return An angle describing the degree angle as Unit + * + * \param ang Degree angle + */ + template + Angle Angle::FromDegrees(T ang) + { + return Angle(Detail::AngleUtils::FromDegrees(ang)); + } + + /*! + * \brief Builds an Angle instance using a radian angle, converting if needed + * \return An angle describing the radian angle as Unit + * + * \param ang Radian angle + */ + template + Angle Angle::FromRadians(T ang) + { + return Angle(Detail::AngleUtils::FromRadians(ang)); + } + /*! * \brief Returns an angle with an angle of zero * \return Zero angle diff --git a/tests/Engine/Physics2D/RigidBody2D.cpp b/tests/Engine/Physics2D/RigidBody2D.cpp index 421a2b083..749fa6f5c 100644 --- a/tests/Engine/Physics2D/RigidBody2D.cpp +++ b/tests/Engine/Physics2D/RigidBody2D.cpp @@ -166,7 +166,7 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") WHEN("We set an angular velocity") { - Nz::RadianAnglef angularSpeed = Nz::RadianAnglef(Nz::DegreeToRadian(90.f)); + Nz::RadianAnglef angularSpeed = Nz::RadianAnglef::FromDegrees(90.f); body.SetAngularVelocity(angularSpeed); world.Step(1.f); diff --git a/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp b/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp index bb6bf250a..d94797065 100644 --- a/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp +++ b/tests/SDK/NDK/Systems/PhysicsSystem2D.cpp @@ -85,7 +85,7 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") WHEN("We make rotate our entity") { - Nz::RadianAnglef angularSpeed = Nz::DegreeToRadian(45.f); + Nz::RadianAnglef angularSpeed = Nz::RadianAnglef::FromDegrees(45.f); physicsComponent2D.SetAngularVelocity(angularSpeed); world.Update(2.f); @@ -93,7 +93,7 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") { CHECK(physicsComponent2D.GetAngularVelocity() == angularSpeed); CHECK(physicsComponent2D.GetAABB() == Nz::Rectf(-2.f, 0.f, 2.f, 1.f)); - CHECK(physicsComponent2D.GetRotation() == Nz::RadianAnglef(Nz::DegreeToRadian(90.f))); + CHECK(physicsComponent2D.GetRotation() == Nz::RadianAnglef::FromDegrees(90.f)); CHECK(nodeComponent.GetRotation().ToEulerAngles().roll == Approx(Nz::FromDegrees(90.f))); } } @@ -129,7 +129,7 @@ SCENARIO("PhysicsSystem2D", "[NDK][PHYSICSSYSTEM2D]") WHEN("We make rotate our entity") { - Nz::RadianAnglef angularSpeed(Nz::DegreeToRadian(45.f)); + Nz::RadianAnglef angularSpeed = Nz::RadianAnglef::FromDegrees(45.f); physicsComponent2D.SetAngularVelocity(angularSpeed); world.Update(2.f); diff --git a/tests/SDK/NDK/Systems/RenderSystem.cpp b/tests/SDK/NDK/Systems/RenderSystem.cpp index d68f544ab..329818f74 100644 --- a/tests/SDK/NDK/Systems/RenderSystem.cpp +++ b/tests/SDK/NDK/Systems/RenderSystem.cpp @@ -82,7 +82,7 @@ SCENARIO("RenderSystem", "[NDK][RenderSystem]") WHEN("We set an angular velocity") { - Nz::RadianAnglef angularSpeed(Nz::DegreeToRadian(90.f)); + Nz::RadianAnglef angularSpeed = Nz::RadianAnglef::FromDegrees(90.f); physicsComponent2D.SetAngularVelocity(angularSpeed); world.Update(1.f); From 7613f50a6e253e1acd057b2acfcf7ec21abd9a15 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 10 Oct 2018 23:01:23 +0200 Subject: [PATCH 180/194] Math/Angle: Rework ToDegrees/ToRadians - Rename To[Degrees|Radians] to To[Degrees|Radians]Angle - Add To[Degrees|Radians] methods which returns an angle value --- include/Nazara/Math/Angle.hpp | 6 ++++-- include/Nazara/Math/Angle.inl | 38 ++++++++++++++++++++++++++--------- tests/Engine/Math/Angle.cpp | 8 ++++---- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index 31ea6daeb..26bccdb36 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -47,10 +47,12 @@ namespace Nz Angle& Set(const Angle& ang); template Angle& Set(const Angle& ang); - Angle ToDegrees() const; + T ToDegrees() const; + Angle ToDegreeAngle() const; EulerAngles ToEulerAngles() const; Quaternion ToQuaternion() const; - Angle ToRadians() const; + T ToRadians() const; + Angle ToRadianAngle() const; String ToString() const; Angle& operator=(const Angle&) = default; diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index b0c52c5a6..78b1d845d 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -164,7 +164,7 @@ namespace Nz template T Angle::GetCos() const { - return std::cos(ToRadians().angle); + return std::cos(ToRadianAngle().angle); } /*! @@ -176,7 +176,7 @@ namespace Nz template T Angle::GetSin() const { - return std::sin(ToRadians().angle); + return std::sin(ToRadianAngle().angle); } /*! @@ -191,7 +191,7 @@ namespace Nz std::pair Angle::GetSinCos() const { T sin, cos; - Detail::SinCos(ToRadians().angle, &sin, &cos); + Detail::SinCos(ToRadianAngle().angle, &sin, &cos); return std::make_pair(sin, cos); } @@ -205,7 +205,7 @@ namespace Nz template T Angle::GetTan() const { - return std::tan(ToRadians().angle); + return std::tan(ToRadianAngle().angle); } /*! @@ -289,14 +289,24 @@ namespace Nz return *this; } + /*! + * \brief Returns the degree angle that is equivalent to this one + * \return Equivalent degree angle value + */ + template + T Angle::ToDegrees() const + { + return Detail::AngleUtils::ToDegrees(angle); + } + /*! * \brief Returns the degree angle that is equivalent to this one * \return Equivalent degree angle */ template - Angle Angle::ToDegrees() const + Angle Angle::ToDegreeAngle() const { - return DegreeAngle(Detail::AngleUtils::ToDegrees(angle)); + return DegreeAngle(ToDegrees()); } /*! @@ -308,7 +318,7 @@ namespace Nz template EulerAngles Angle::ToEulerAngles() const { - return EulerAngles(0, 0, ToDegrees().angle); + return EulerAngles(0, 0, ToDegreeAngle().angle); } /*! @@ -327,14 +337,24 @@ namespace Nz return Quaternion(sincos.second, 0, 0, sincos.first); } + /*! + * \brief Returns the radian angle that is equivalent to this angle + * \return Equivalent radian angle value + */ + template + T Angle::ToRadians() const + { + return Detail::AngleUtils::ToRadians(angle); + } + /*! * \brief Returns the radian angle that is equivalent to this angle * \return Equivalent radian angle */ template - Angle Angle::ToRadians() const + Angle Angle::ToRadianAngle() const { - return RadianAngle(Detail::AngleUtils::ToRadians(angle)); + return RadianAngle(ToRadians()); } /*! diff --git a/tests/Engine/Math/Angle.cpp b/tests/Engine/Math/Angle.cpp index 3b5346c06..7eddb3d3e 100644 --- a/tests/Engine/Math/Angle.cpp +++ b/tests/Engine/Math/Angle.cpp @@ -11,7 +11,7 @@ SCENARIO("Angle", "[MATH][ANGLE]") WHEN("We convert it to degrees") { - Nz::DegreeAnglef copyAngle = angle.ToDegrees(); + Nz::DegreeAnglef copyAngle = angle.ToDegreeAngle(); THEN("It should compare to itself") { @@ -28,7 +28,7 @@ SCENARIO("Angle", "[MATH][ANGLE]") Nz::RadianAnglef expectedResult(float(M_PI_2)); CHECK(radAngle == expectedResult); - CHECK(angle.ToRadians() == expectedResult); + CHECK(angle.ToRadianAngle() == expectedResult); } } @@ -110,7 +110,7 @@ SCENARIO("Angle", "[MATH][ANGLE]") WHEN("We convert it to radians") { - Nz::RadianAnglef copyAngle = angle.ToRadians(); + Nz::RadianAnglef copyAngle = angle.ToRadianAngle(); THEN("It should compare to itself") { @@ -127,7 +127,7 @@ SCENARIO("Angle", "[MATH][ANGLE]") Nz::DegreeAnglef expectedResult(-180.f); CHECK(degAngle == expectedResult); - CHECK(angle.ToDegrees() == expectedResult); + CHECK(angle.ToDegreeAngle() == expectedResult); } } From fb11fe1ecf5bccbf05d25e165fa3c9f51db54cea Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 10 Oct 2018 23:12:27 +0200 Subject: [PATCH 181/194] Math/Angle: Rename angle field to value --- include/Nazara/Math/Angle.hpp | 2 +- include/Nazara/Math/Angle.inl | 56 +++++++++++++------------- src/Nazara/Physics2D/Constraint2D.cpp | 12 +++--- src/Nazara/Physics2D/RigidBody2D.cpp | 4 +- tests/Engine/Graphics/Billboard.cpp | 2 +- tests/Engine/Physics2D/RigidBody2D.cpp | 8 ++-- 6 files changed, 42 insertions(+), 42 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index 26bccdb36..fe559e958 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -74,7 +74,7 @@ namespace Nz static Angle FromRadians(T ang); static Angle Zero(); - T angle; + T value; }; template diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index 78b1d845d..fab999436 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -151,7 +151,7 @@ namespace Nz */ template Angle::Angle(T value) : - angle(value) + value(value) { } @@ -214,7 +214,7 @@ namespace Nz template Angle& Angle::MakeZero() { - angle = T(0); + value = T(0); return *this; } @@ -231,9 +231,9 @@ namespace Nz constexpr T limit = Detail::AngleUtils::template GetLimit(); constexpr T twoLimit = limit * T(2); - angle = std::fmod(angle, twoLimit); - if (angle < T(0)) - angle += twoLimit; + value = std::fmod(value, twoLimit); + if (value < T(0)) + value += twoLimit; } /*! @@ -245,7 +245,7 @@ namespace Nz template Angle& Angle::Set(const Angle& ang) { - angle = RadianToDegree(ang.angle); + value = RadianToDegree(ang.value); return *this; } @@ -258,7 +258,7 @@ namespace Nz template Angle& Angle::Set(const Angle& ang) { - angle = DegreeToRadian(ang.angle); + value = DegreeToRadian(ang.value); return *this; } @@ -270,7 +270,7 @@ namespace Nz template Angle& Angle::Set(const Angle& ang) { - angle = ang.angle; + value = ang.value; return *this; } @@ -285,7 +285,7 @@ namespace Nz template Angle& Angle::Set(const Angle& ang) { - angle = static_cast(ang.angle); + value = static_cast(ang.value); return *this; } @@ -296,7 +296,7 @@ namespace Nz template T Angle::ToDegrees() const { - return Detail::AngleUtils::ToDegrees(angle); + return Detail::AngleUtils::ToDegrees(value); } /*! @@ -318,7 +318,7 @@ namespace Nz template EulerAngles Angle::ToEulerAngles() const { - return EulerAngles(0, 0, ToDegreeAngle().angle); + return EulerAngles(0, 0, ToDegrees()); } /*! @@ -344,7 +344,7 @@ namespace Nz template T Angle::ToRadians() const { - return Detail::AngleUtils::ToRadians(angle); + return Detail::AngleUtils::ToRadians(value); } /*! @@ -364,7 +364,7 @@ namespace Nz template String Angle::ToString() const { - return Detail::AngleUtils::ToString(angle); + return Detail::AngleUtils::ToString(value); } /*! @@ -376,7 +376,7 @@ namespace Nz template Angle Angle::operator+(const Angle& other) const { - return Angle(angle + other.angle); + return Angle(value + other.value); } /*! @@ -388,7 +388,7 @@ namespace Nz template Angle Angle::operator-(const Angle& other) const { - return Angle(angle - other.angle); + return Angle(value - other.value); } /*! @@ -400,7 +400,7 @@ namespace Nz template Angle Angle::operator*(T scalar) const { - return Angle(angle * scalar); + return Angle(value * scalar); } /*! @@ -412,7 +412,7 @@ namespace Nz template Angle Angle::operator/(T divider) const { - return Angle(angle / divider); + return Angle(value / divider); } /*! @@ -424,7 +424,7 @@ namespace Nz template Angle& Angle::operator+=(const Angle& other) { - angle += other.angle; + value += other.value; return *this; } @@ -437,7 +437,7 @@ namespace Nz template Angle& Angle::operator-=(const Angle& other) { - angle -= other.angle; + value -= other.value; return *this; } @@ -450,7 +450,7 @@ namespace Nz template Angle& Angle::operator*=(T scalar) { - angle *= scalar; + value *= scalar; return *this; } @@ -463,7 +463,7 @@ namespace Nz template Angle& Angle::operator/=(T divider) { - angle /= divider; + value /= divider; return *this; } @@ -476,7 +476,7 @@ namespace Nz template bool Angle::operator==(const Angle& other) const { - return NumberEquals(angle, other.angle, Detail::AngleUtils::template GetEpsilon()); + return NumberEquals(value, other.value, Detail::AngleUtils::template GetEpsilon()); } /*! @@ -488,7 +488,7 @@ namespace Nz template bool Angle::operator!=(const Angle& other) const { - return !NumberEquals(angle, other.angle, Detail::AngleUtils::template GetEpsilon()); + return !NumberEquals(value, other.value, Detail::AngleUtils::template GetEpsilon()); } /*! @@ -538,7 +538,7 @@ namespace Nz template bool Serialize(SerializationContext& context, const Angle& angle, TypeTag>) { - if (!Serialize(context, angle.angle)) + if (!Serialize(context, angle.value)) return false; return true; @@ -554,7 +554,7 @@ namespace Nz template bool Unserialize(SerializationContext& context, Angle* angle, TypeTag>) { - if (!Unserialize(context, &angle->angle)) + if (!Unserialize(context, &angle->value)) return false; return true; @@ -571,7 +571,7 @@ namespace Nz template Nz::Angle operator*(T scale, const Nz::Angle& angle) { - return Nz::Angle(scale * angle.angle); + return Nz::Angle(scale * angle.value); } /*! @@ -584,7 +584,7 @@ Nz::Angle operator*(T scale, const Nz::Angle& angle) template Nz::Angle operator/(T scale, const Nz::Angle& angle) { - return Nz::Angle(scale / angle.angle); + return Nz::Angle(scale / angle.value); } /*! @@ -597,7 +597,7 @@ Nz::Angle operator/(T scale, const Nz::Angle& angle) template std::ostream& operator<<(std::ostream& out, const Nz::Angle& angle) { - return Nz::Detail::AngleUtils::ToString(out, angle.angle); + return Nz::Detail::AngleUtils::ToString(out, angle.value); } #include diff --git a/src/Nazara/Physics2D/Constraint2D.cpp b/src/Nazara/Physics2D/Constraint2D.cpp index c4c92fd4c..e4ad5e407 100644 --- a/src/Nazara/Physics2D/Constraint2D.cpp +++ b/src/Nazara/Physics2D/Constraint2D.cpp @@ -164,7 +164,7 @@ namespace Nz DampedRotarySpringConstraint2D::DampedRotarySpringConstraint2D(RigidBody2D& first, RigidBody2D& second, const RadianAnglef& restAngle, float stiffness, float damping) : - Constraint2D(first.GetWorld(), cpDampedRotarySpringNew(first.GetHandle(), second.GetHandle(), restAngle.angle, stiffness, damping)) + Constraint2D(first.GetWorld(), cpDampedRotarySpringNew(first.GetHandle(), second.GetHandle(), restAngle.value, stiffness, damping)) { } @@ -190,7 +190,7 @@ namespace Nz void DampedRotarySpringConstraint2D::SetRestAngle(const RadianAnglef& newAngle) { - cpDampedRotarySpringSetRestAngle(m_constraint, newAngle.angle); + cpDampedRotarySpringSetRestAngle(m_constraint, newAngle.value); } void DampedRotarySpringConstraint2D::SetStiffness(float newStiffness) @@ -334,7 +334,7 @@ namespace Nz void RatchetConstraint2D::SetAngle(const RadianAnglef& angle) { - cpRatchetJointSetAngle(m_constraint, angle.angle); + cpRatchetJointSetAngle(m_constraint, angle.value); } void RatchetConstraint2D::SetPhase(float phase) @@ -349,7 +349,7 @@ namespace Nz RotaryLimitConstraint2D::RotaryLimitConstraint2D(RigidBody2D& first, RigidBody2D& second, const RadianAnglef& minAngle, const RadianAnglef& maxAngle) : - Constraint2D(first.GetWorld(), cpRotaryLimitJointNew(first.GetHandle(), second.GetHandle(), minAngle.angle, maxAngle.angle)) + Constraint2D(first.GetWorld(), cpRotaryLimitJointNew(first.GetHandle(), second.GetHandle(), minAngle.value, maxAngle.value)) { } @@ -365,12 +365,12 @@ namespace Nz void RotaryLimitConstraint2D::SetMaxAngle(const RadianAnglef& maxAngle) { - cpRotaryLimitJointSetMax(m_constraint, maxAngle.angle); + cpRotaryLimitJointSetMax(m_constraint, maxAngle.value); } void RotaryLimitConstraint2D::SetMinAngle(const RadianAnglef& minAngle) { - cpRotaryLimitJointSetMin(m_constraint, minAngle.angle); + cpRotaryLimitJointSetMin(m_constraint, minAngle.value); } diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index 99013467e..0d8c120b6 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -307,7 +307,7 @@ namespace Nz void RigidBody2D::SetAngularVelocity(const RadianAnglef& angularVelocity) { - cpBodySetAngularVelocity(m_handle, angularVelocity.angle); + cpBodySetAngularVelocity(m_handle, angularVelocity.value); } void RigidBody2D::SetElasticity(float friction) @@ -450,7 +450,7 @@ namespace Nz void RigidBody2D::SetRotation(const RadianAnglef& rotation) { - cpBodySetAngle(m_handle, rotation.angle); + cpBodySetAngle(m_handle, rotation.value); if (m_isStatic) { m_world->RegisterPostStep(this, [](Nz::RigidBody2D* body) diff --git a/tests/Engine/Graphics/Billboard.cpp b/tests/Engine/Graphics/Billboard.cpp index de0bc8d02..651274bfd 100644 --- a/tests/Engine/Graphics/Billboard.cpp +++ b/tests/Engine/Graphics/Billboard.cpp @@ -20,7 +20,7 @@ SCENARIO("Billboard", "[GRAPHICS][BILLBOARD]") { REQUIRE(billboard.GetColor() == materialColor); REQUIRE(billboard.GetMaterial().Get() == materialRef.Get()); - REQUIRE(billboard.GetRotation().angle == Approx(0.f)); + REQUIRE(billboard.GetRotation().value == Approx(0.f)); REQUIRE(billboard.GetSize() == Nz::Vector2f(64.f, 64.f)); // Default sizes } diff --git a/tests/Engine/Physics2D/RigidBody2D.cpp b/tests/Engine/Physics2D/RigidBody2D.cpp index 749fa6f5c..98af5c13b 100644 --- a/tests/Engine/Physics2D/RigidBody2D.cpp +++ b/tests/Engine/Physics2D/RigidBody2D.cpp @@ -130,7 +130,7 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") CHECK(body.GetGeom() == box); CHECK(body.GetMass() == Approx(mass)); CHECK(body.GetPosition() == position); - CHECK(body.GetRotation().angle == Approx(0.f)); + CHECK(body.GetRotation().value == Approx(0.f)); CHECK(body.GetUserdata() == &userData); CHECK(body.GetVelocity() == Nz::Vector2f::Zero()); @@ -196,8 +196,8 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") THEN("It is also counter-clockwise") { - CHECK(body.GetAngularVelocity().angle >= 0.f); - CHECK(body.GetRotation().angle >= 0.f); + CHECK(body.GetAngularVelocity().value >= 0.f); + CHECK(body.GetRotation().value >= 0.f); } } } @@ -321,7 +321,7 @@ void EQUALITY(const Nz::RigidBody2D& left, const Nz::RigidBody2D& right) CHECK(left.GetHandle() != right.GetHandle()); CHECK(left.GetMass() == Approx(right.GetMass())); CHECK(left.GetPosition() == right.GetPosition()); - CHECK(left.GetRotation().angle == Approx(right.GetRotation().angle)); + CHECK(left.GetRotation().value == Approx(right.GetRotation().value)); CHECK(left.GetUserdata() == right.GetUserdata()); CHECK(left.GetVelocity() == right.GetVelocity()); } From 6653be6f2ca3d700161cb26a50dff84df258cbd8 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 10 Oct 2018 23:12:45 +0200 Subject: [PATCH 182/194] Math/Angle: Make use of ToRadians() --- include/Nazara/Math/Angle.inl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index fab999436..855987a4a 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -164,7 +164,7 @@ namespace Nz template T Angle::GetCos() const { - return std::cos(ToRadianAngle().angle); + return std::cos(ToRadians()); } /*! @@ -176,7 +176,7 @@ namespace Nz template T Angle::GetSin() const { - return std::sin(ToRadianAngle().angle); + return std::sin(ToRadians()); } /*! @@ -191,7 +191,7 @@ namespace Nz std::pair Angle::GetSinCos() const { T sin, cos; - Detail::SinCos(ToRadianAngle().angle, &sin, &cos); + Detail::SinCos(ToRadians(), &sin, &cos); return std::make_pair(sin, cos); } @@ -205,7 +205,7 @@ namespace Nz template T Angle::GetTan() const { - return std::tan(ToRadianAngle().angle); + return std::tan(ToRadians()); } /*! From d2b1d51ecbd5e76c7bd6e9a9db358fe122ad696e Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 11 Oct 2018 00:07:50 +0200 Subject: [PATCH 183/194] Math/Angle: Replace conversion constructors by conversion operators --- include/Nazara/Math/Angle.hpp | 7 +++-- include/Nazara/Math/Angle.inl | 48 ++++++++++++++++------------------- 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index fe559e958..d65dc7c4f 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -27,8 +27,6 @@ namespace Nz public: Angle() = default; Angle(T value); - template> explicit Angle(const Angle& value) { Set(value); } - template> explicit Angle(const Angle& value) { Set(value); } template explicit Angle(const Angle& Angle); Angle(const Angle&) = default; ~Angle() = default; @@ -42,8 +40,6 @@ namespace Nz void Normalize(); - template> Angle& Set(const Angle& ang); - template> Angle& Set(const Angle& ang); Angle& Set(const Angle& ang); template Angle& Set(const Angle& ang); @@ -55,6 +51,9 @@ namespace Nz Angle ToRadianAngle() const; String ToString() const; + template> operator Angle(); + template> operator Angle(); + Angle& operator=(const Angle&) = default; Angle operator+(const Angle& other) const; diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index 855987a4a..d50bcb6d1 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -236,32 +236,6 @@ namespace Nz value += twoLimit; } - /*! - * \brief Changes the angle value by converting a radian angle - * - * \param Angle Radian angle which will be converted - */ - template - template - Angle& Angle::Set(const Angle& ang) - { - value = RadianToDegree(ang.value); - return *this; - } - - /*! - * \brief Changes the angle value by converting a degree angle - * - * \param Angle Degree angle which will be converted - */ - template - template - Angle& Angle::Set(const Angle& ang) - { - value = DegreeToRadian(ang.value); - return *this; - } - /*! * \brief Copies the angle value of an angle * @@ -367,6 +341,28 @@ namespace Nz return Detail::AngleUtils::ToString(value); } + /*! + * \brief Returns the degree angle that is equivalent to this one + * \return Equivalent degree angle + */ + template + template + Angle::operator Angle() + { + return ToDegreeAngle(); + } + + /*! + * \brief Converts the angle to a string representation + * \return String representation of the angle + */ + template + template + Angle::operator Angle() + { + return ToRadianAngle(); + } + /*! * \brief Addition operator * \return Adds two angles together From 3933d5007df0a4513f0bed5a13156dc16da556f1 Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 11 Oct 2018 00:08:26 +0200 Subject: [PATCH 184/194] Physics2D/RigidBody2D: AddTorque now takes a RadianAnglesf instead of a float --- SDK/include/NDK/Components/PhysicsComponent2D.hpp | 2 +- SDK/include/NDK/Components/PhysicsComponent2D.inl | 2 +- include/Nazara/Physics2D/RigidBody2D.hpp | 2 +- src/Nazara/Physics2D/RigidBody2D.cpp | 4 ++-- tests/Engine/Physics2D/RigidBody2D.cpp | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.hpp b/SDK/include/NDK/Components/PhysicsComponent2D.hpp index a652ceec6..841b2df34 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.hpp +++ b/SDK/include/NDK/Components/PhysicsComponent2D.hpp @@ -32,7 +32,7 @@ namespace Ndk inline void AddForce(const Nz::Vector2f& force, const Nz::Vector2f& point, Nz::CoordSys coordSys = Nz::CoordSys_Global); inline void AddImpulse(const Nz::Vector2f& impulse, Nz::CoordSys coordSys = Nz::CoordSys_Global); inline void AddImpulse(const Nz::Vector2f& impulse, const Nz::Vector2f& point, Nz::CoordSys coordSys = Nz::CoordSys_Global); - inline void AddTorque(float torque); + inline void AddTorque(const Nz::RadianAnglef& torque); inline bool ClosestPointQuery(const Nz::Vector2f& position, Nz::Vector2f* closestPoint, float* closestDistance) const; diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.inl b/SDK/include/NDK/Components/PhysicsComponent2D.inl index 8af4356f4..35782dcd9 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.inl +++ b/SDK/include/NDK/Components/PhysicsComponent2D.inl @@ -91,7 +91,7 @@ namespace Ndk * \remark Produces a NazaraAssert if the physics object is invalid */ - inline void PhysicsComponent2D::AddTorque(float torque) + inline void PhysicsComponent2D::AddTorque(const Nz::RadianAnglef& torque) { NazaraAssert(m_object, "Invalid physics object"); diff --git a/include/Nazara/Physics2D/RigidBody2D.hpp b/include/Nazara/Physics2D/RigidBody2D.hpp index b23b97187..39dbb0b83 100644 --- a/include/Nazara/Physics2D/RigidBody2D.hpp +++ b/include/Nazara/Physics2D/RigidBody2D.hpp @@ -35,7 +35,7 @@ namespace Nz void AddForce(const Vector2f& force, const Vector2f& point, CoordSys coordSys = CoordSys_Global); void AddImpulse(const Vector2f& impulse, CoordSys coordSys = CoordSys_Global); void AddImpulse(const Vector2f& impulse, const Vector2f& point, CoordSys coordSys = CoordSys_Global); - void AddTorque(float torque); + void AddTorque(const RadianAnglef& torque); bool ClosestPointQuery(const Nz::Vector2f& position, Nz::Vector2f* closestPoint = nullptr, float* closestDistance = nullptr) const; diff --git a/src/Nazara/Physics2D/RigidBody2D.cpp b/src/Nazara/Physics2D/RigidBody2D.cpp index 0d8c120b6..4abd6505b 100644 --- a/src/Nazara/Physics2D/RigidBody2D.cpp +++ b/src/Nazara/Physics2D/RigidBody2D.cpp @@ -126,9 +126,9 @@ namespace Nz } } - void RigidBody2D::AddTorque(float torque) + void RigidBody2D::AddTorque(const RadianAnglef& torque) { - cpBodySetTorque(m_handle, cpBodyGetTorque(m_handle) + ToRadians(torque)); + cpBodySetTorque(m_handle, cpBodyGetTorque(m_handle) + torque.value); } bool RigidBody2D::ClosestPointQuery(const Nz::Vector2f& position, Nz::Vector2f* closestPoint, float* closestDistance) const diff --git a/tests/Engine/Physics2D/RigidBody2D.cpp b/tests/Engine/Physics2D/RigidBody2D.cpp index 98af5c13b..7eae99908 100644 --- a/tests/Engine/Physics2D/RigidBody2D.cpp +++ b/tests/Engine/Physics2D/RigidBody2D.cpp @@ -191,7 +191,7 @@ SCENARIO("RigidBody2D", "[PHYSICS2D][RIGIDBODY2D]") WHEN("We apply a torque") { - body.AddTorque(Nz::DegreeToRadian(90.f)); + body.AddTorque(Nz::DegreeAnglef(90.f)); world.Step(1.f); THEN("It is also counter-clockwise") From 4c4822eef905fdf08db173d63ba42e2bc4ec94b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 12 Oct 2018 15:46:40 +0200 Subject: [PATCH 185/194] Core/ObjectHandle: Remade object handle system --- ChangeLog.md | 2 + SDK/include/NDK/Entity.hpp | 2 +- SDK/include/NDK/EntityOwner.hpp | 1 + SDK/include/NDK/EntityOwner.inl | 17 +++- include/Nazara/Core/HandledObject.hpp | 17 +++- include/Nazara/Core/HandledObject.inl | 76 +++++--------- include/Nazara/Core/ObjectHandle.hpp | 13 +-- include/Nazara/Core/ObjectHandle.inl | 141 ++++++-------------------- src/Nazara/Core/HandledObject.cpp | 18 ++++ 9 files changed, 107 insertions(+), 180 deletions(-) create mode 100644 src/Nazara/Core/HandledObject.cpp diff --git a/ChangeLog.md b/ChangeLog.md index a49c7d583..43f8aa898 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -151,6 +151,7 @@ Nazara Engine: - Added TcpClient::PollForConnected - ⚠️ Use of the new Angle class instead of floating point angle - It is now possible to set elasticity/friction/surface bodies of 2D colliders and change it at runtime on RigidBody2D +- ObjectHandle were remade and should be way more optimized now Nazara Development Kit: - Added ImageWidget (#139) @@ -219,6 +220,7 @@ Nazara Development Kit: - EntityOwner constructor taking a Entity* is no longer explicit - PhysicsComponent2D now allows massless bodies (zero mass) - ⚠️ Use of the new Angle class instead of floating point angle +- Added EntityOwner::Release # 0.4: diff --git a/SDK/include/NDK/Entity.hpp b/SDK/include/NDK/Entity.hpp index 3cbe4785c..43a4a43c7 100644 --- a/SDK/include/NDK/Entity.hpp +++ b/SDK/include/NDK/Entity.hpp @@ -8,8 +8,8 @@ #define NDK_ENTITY_HPP #include -#include #include +#include #include #include #include diff --git a/SDK/include/NDK/EntityOwner.hpp b/SDK/include/NDK/EntityOwner.hpp index 0be491058..84eb95feb 100644 --- a/SDK/include/NDK/EntityOwner.hpp +++ b/SDK/include/NDK/EntityOwner.hpp @@ -20,6 +20,7 @@ namespace Ndk EntityOwner(EntityOwner&& handle) noexcept = default; ~EntityOwner(); + void Release(); void Reset(Entity* entity = nullptr); void Reset(EntityOwner&& handle); diff --git a/SDK/include/NDK/EntityOwner.inl b/SDK/include/NDK/EntityOwner.inl index 566962fb0..4ee9530f7 100644 --- a/SDK/include/NDK/EntityOwner.inl +++ b/SDK/include/NDK/EntityOwner.inl @@ -2,6 +2,7 @@ // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequisites.hpp +#include #include #include #include @@ -36,16 +37,23 @@ namespace Ndk Reset(nullptr); } + /*! + * \brief Release the ownership of the entity without killing it + */ + inline void EntityOwner::Release() + { + EntityHandle::Reset(nullptr); + } + /*! * \brief Resets the ownership of the entity, previous is killed * * \param entity Entity to own */ - inline void EntityOwner::Reset(Entity* entity) { - if (m_object) - m_object->Kill(); + if (IsValid()) + GetObject()->Kill(); EntityHandle::Reset(entity); } @@ -55,11 +63,10 @@ namespace Ndk * * \param handle EntityOwner to move into this */ - inline void EntityOwner::Reset(EntityOwner&& handle) { Reset(handle.GetObject()); - handle.m_object = nullptr; + handle.Release(); } /*! diff --git a/include/Nazara/Core/HandledObject.hpp b/include/Nazara/Core/HandledObject.hpp index 633f7e9fe..27c8646b3 100644 --- a/include/Nazara/Core/HandledObject.hpp +++ b/include/Nazara/Core/HandledObject.hpp @@ -13,6 +13,16 @@ namespace Nz { + namespace Detail + { + struct NAZARA_CORE_API HandleData + { + void* object; + + static std::shared_ptr GetEmptyObject(); + }; + } + template class ObjectHandle; template @@ -35,11 +45,10 @@ namespace Nz void UnregisterAllHandles() noexcept; private: - void RegisterHandle(ObjectHandle* handle); - void UnregisterHandle(ObjectHandle* handle) noexcept; - void UpdateHandle(ObjectHandle* oldHandle, ObjectHandle* newHandle) noexcept; + std::shared_ptr GetHandleData(); + void InitHandleData(); - std::vector*> m_handles; + std::shared_ptr m_handleData; }; } diff --git a/include/Nazara/Core/HandledObject.inl b/include/Nazara/Core/HandledObject.inl index 3349fa7e1..bc11ec645 100644 --- a/include/Nazara/Core/HandledObject.inl +++ b/include/Nazara/Core/HandledObject.inl @@ -2,9 +2,10 @@ // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequisites.hpp +#include #include -#include #include +#include #include #include @@ -35,10 +36,10 @@ namespace Nz */ template HandledObject::HandledObject(HandledObject&& object) noexcept : - m_handles(std::move(object.m_handles)) + m_handleData(std::move(object.m_handleData)) { - for (ObjectHandle* handle : m_handles) - handle->OnObjectMoved(static_cast(this)); + if (m_handleData) + m_handleData->object = static_cast(this); } /*! @@ -74,7 +75,7 @@ namespace Nz NazaraUnused(object); // Nothing to do - return *this; + return *this; } /*! @@ -88,73 +89,42 @@ namespace Nz { UnregisterAllHandles(); - m_handles = std::move(object.m_handles); - for (ObjectHandle* handle : m_handles) - handle->OnObjectMoved(static_cast(this)); + m_handleData = std::move(object.m_handleData); + + if (m_handleData) + m_handleData->object = static_cast(this); return *this; } - /*! - * \brief Registers a handle - * - * \param handle Handle to register - * - * \remark One handle can only be registered once, errors can occur if it's more than once - */ - template - void HandledObject::RegisterHandle(ObjectHandle* handle) - { - m_handles.push_back(handle); - } - /*! * \brief Unregisters all handles */ template void HandledObject::UnregisterAllHandles() noexcept { - // Tell every handle we got destroyed, to null them - for (ObjectHandle* handle : m_handles) - handle->OnObjectDestroyed(); - - m_handles.clear(); + if (m_handleData) + { + m_handleData->object = nullptr; + m_handleData.reset(); + } } - /*! - * \brief Unregisters a handle - * - * \param handle Handle to unregister - * - * \remark One handle can only be unregistered once, crash can occur if it's more than once - * \remark Produces a NazaraAssert if handle not registered - */ template - void HandledObject::UnregisterHandle(ObjectHandle* handle) noexcept + std::shared_ptr HandledObject::GetHandleData() { - auto it = std::find(m_handles.begin(), m_handles.end(), handle); - NazaraAssert(it != m_handles.end(), "Handle not registered"); + if (!m_handleData) + InitHandleData(); - // Swap and pop idiom, more efficient than vector::erase - std::swap(*it, m_handles.back()); - m_handles.pop_back(); + return std::shared_ptr(m_handleData); } - /*! - * \brief Updates one handle with another - * - * \param oldHandle Old handle to replace - * \param newHandle New handle to take place - * - * \remark Produces a NazaraAssert if handle not registered - */ template - void HandledObject::UpdateHandle(ObjectHandle* oldHandle, ObjectHandle* newHandle) noexcept + void HandledObject::InitHandleData() { - auto it = std::find(m_handles.begin(), m_handles.end(), oldHandle); - NazaraAssert(it != m_handles.end(), "Handle not registered"); + assert(!m_handleData); - // Simply update the handle - *it = newHandle; + m_handleData = std::make_shared(); + m_handleData->object = static_cast(this); } } diff --git a/include/Nazara/Core/ObjectHandle.hpp b/include/Nazara/Core/ObjectHandle.hpp index 9dadbc832..e2e72f185 100644 --- a/include/Nazara/Core/ObjectHandle.hpp +++ b/include/Nazara/Core/ObjectHandle.hpp @@ -8,12 +8,12 @@ #define NAZARA_OBJECTHANDLE_HPP #include +#include +#include #include namespace Nz { - template class HandledObject; - template class ObjectHandle { @@ -22,7 +22,7 @@ namespace Nz public: ObjectHandle(); explicit ObjectHandle(T* object); - ObjectHandle(const ObjectHandle& handle); + ObjectHandle(const ObjectHandle& handle) = default; ObjectHandle(ObjectHandle&& handle) noexcept; ~ObjectHandle(); @@ -43,16 +43,13 @@ namespace Nz T* operator->() const; ObjectHandle& operator=(T* object); - ObjectHandle& operator=(const ObjectHandle& handle); + ObjectHandle& operator=(const ObjectHandle& handle) = default; ObjectHandle& operator=(ObjectHandle&& handle) noexcept; static const ObjectHandle InvalidHandle; protected: - void OnObjectDestroyed() noexcept; - void OnObjectMoved(T* newObject) noexcept; - - T* m_object; + std::shared_ptr m_handleData; }; template std::ostream& operator<<(std::ostream& out, const ObjectHandle& handle); diff --git a/include/Nazara/Core/ObjectHandle.inl b/include/Nazara/Core/ObjectHandle.inl index 0ba6afc2c..fc43fdffe 100644 --- a/include/Nazara/Core/ObjectHandle.inl +++ b/include/Nazara/Core/ObjectHandle.inl @@ -15,37 +15,15 @@ namespace Nz * \brief Core class that represents a object handle */ - /*! - * \brief Constructs a ObjectHandle object by default - */ - template - ObjectHandle::ObjectHandle() : - m_object(nullptr) - { - } - /*! * \brief Constructs a ObjectHandle object with a pointer to an object * * \param object Pointer to handle like an object (can be nullptr) */ template - ObjectHandle::ObjectHandle(T* object) : - ObjectHandle() + ObjectHandle::ObjectHandle() : + m_handleData(Detail::HandleData::GetEmptyObject()) { - Reset(object); - } - - /*! - * \brief Constructs a ObjectHandle object by assignation - * - * \param handle ObjectHandle to assign into this - */ - template - ObjectHandle::ObjectHandle(const ObjectHandle& handle) : - ObjectHandle() - { - Reset(handle); } /*! @@ -54,12 +32,22 @@ namespace Nz * \param handle ObjectHandle to move into this */ template - ObjectHandle::ObjectHandle(ObjectHandle&& handle) noexcept : - ObjectHandle() + ObjectHandle::ObjectHandle(ObjectHandle&& handle) noexcept { Reset(std::move(handle)); } + /*! + * \brief Constructs a ObjectHandle object with a pointer to an object + * + * \param object Pointer to handle like an object (can be nullptr) + */ + template + ObjectHandle::ObjectHandle(T* object) + { + Reset(object); + } + /*! * \brief Destructs the object and calls reset with nullptr * @@ -78,7 +66,7 @@ namespace Nz template T* ObjectHandle::GetObject() const { - return m_object; + return static_cast(m_handleData->object); } /*! @@ -88,7 +76,7 @@ namespace Nz template bool ObjectHandle::IsValid() const { - return m_object != nullptr; + return m_handleData->object != nullptr; } /*! @@ -99,14 +87,10 @@ namespace Nz template void ObjectHandle::Reset(T* object) { - // If we already have an entity, we must alert it that we are not pointing to it anymore - if (m_object) - m_object->UnregisterHandle(this); - - m_object = object; - if (m_object) - // We alert the new entity that we are pointing to it - m_object->RegisterHandle(this); + if (object) + m_handleData = object->GetHandleData(); + else + m_handleData = Detail::HandleData::GetEmptyObject(); } /*! @@ -117,7 +101,7 @@ namespace Nz template void ObjectHandle::Reset(const ObjectHandle& handle) { - Reset(handle.GetObject()); + m_handleData = handle.m_handleData; } /*! @@ -128,20 +112,8 @@ namespace Nz template void ObjectHandle::Reset(ObjectHandle&& handle) noexcept { - if (this == &handle) - return; - - if (m_object) - m_object->UnregisterHandle(this); - - if (T* object = handle.GetObject()) - { - m_object = handle.m_object; - handle.m_object = nullptr; - object->UpdateHandle(&handle, this); - } - else - m_object = nullptr; + m_handleData = std::move(handle.m_handleData); + handle.m_handleData = Detail::HandleData::GetEmptyObject(); } /*! @@ -153,23 +125,8 @@ namespace Nz template ObjectHandle& ObjectHandle::Swap(ObjectHandle& handle) { - // As we swap the two handles, we must alert the entities - // The default version with swap (move) would be working, - // but will register handles one more time (due to temporary copy). - if (m_object) - { - m_object->UnregisterHandle(this); - m_object->RegisterHandle(&handle); - } - - if (handle.m_object) - { - handle.m_object->UnregisterHandle(&handle); - handle.m_object->RegisterHandle(this); - } - // We do the swap - std::swap(m_object, handle.m_object); + std::swap(m_handleData, handle.m_handleData); return *this; } @@ -183,7 +140,7 @@ namespace Nz Nz::StringStream ss; ss << "ObjectHandle("; if (IsValid()) - ss << m_object->ToString(); + ss << GetObject()->ToString(); else ss << "Null"; @@ -211,7 +168,7 @@ namespace Nz template ObjectHandle::operator T*() const { - return m_object; + return GetObject(); } /*! @@ -221,7 +178,7 @@ namespace Nz template T* ObjectHandle::operator->() const { - return m_object; + return GetObject(); } /*! @@ -231,23 +188,9 @@ namespace Nz * \param entity Pointer to handle like an object (can be nullptr) */ template - ObjectHandle& ObjectHandle::operator=(T* entity) + ObjectHandle& ObjectHandle::operator=(T* object) { - Reset(entity); - - return *this; - } - - /*! - * \brief Sets the handle of the ObjectHandle with the handle from another - * \return A reference to this - * - * \param handle The other ObjectHandle - */ - template - ObjectHandle& ObjectHandle::operator=(const ObjectHandle& handle) - { - Reset(handle); + Reset(object); return *this; } @@ -266,26 +209,6 @@ namespace Nz return *this; } - /*! - * \brief Action to do on object destruction - */ - template - void ObjectHandle::OnObjectDestroyed() noexcept - { - // Shortcut - m_object = nullptr; - } - - /*! - * \brief Action to do on object move - */ - template - void ObjectHandle::OnObjectMoved(T* newObject) noexcept - { - // The object has been moved, update our pointer - m_object = newObject; - } - /*! * \brief Output operator * \return The stream @@ -388,7 +311,7 @@ namespace Nz template bool operator<(const ObjectHandle& lhs, const ObjectHandle& rhs) { - return lhs.m_object < rhs.m_object; + return lhs.GetObject() < rhs.GetObject(); } /*! @@ -401,7 +324,7 @@ namespace Nz template bool operator<(const T& lhs, const ObjectHandle& rhs) { - return &lhs < rhs.m_object; + return &lhs < rhs.GetObject(); } /*! @@ -414,7 +337,7 @@ namespace Nz template bool operator<(const ObjectHandle& lhs, const T& rhs) { - return lhs.m_object < &rhs; + return lhs.GetObject() < &rhs; } /*! diff --git a/src/Nazara/Core/HandledObject.cpp b/src/Nazara/Core/HandledObject.cpp new file mode 100644 index 000000000..664912a6c --- /dev/null +++ b/src/Nazara/Core/HandledObject.cpp @@ -0,0 +1,18 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Core module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include + +namespace Nz +{ + namespace Detail + { + std::shared_ptr HandleData::GetEmptyObject() + { + static std::shared_ptr emptyHandleData = std::make_shared(HandleData{}); + return emptyHandleData; + } + } +} From 5e45983953a3aac5b4c7fd429bd972828e3c7860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 12 Oct 2018 17:09:39 +0200 Subject: [PATCH 186/194] Math/Angle: Fix compilation & warning on GCC < 8 --- include/Nazara/Math/Angle.hpp | 6 +++--- include/Nazara/Math/Angle.inl | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/Nazara/Math/Angle.hpp b/include/Nazara/Math/Angle.hpp index d65dc7c4f..64e7ad878 100644 --- a/include/Nazara/Math/Angle.hpp +++ b/include/Nazara/Math/Angle.hpp @@ -26,7 +26,7 @@ namespace Nz { public: Angle() = default; - Angle(T value); + Angle(T angle); template explicit Angle(const Angle& Angle); Angle(const Angle&) = default; ~Angle() = default; @@ -51,8 +51,8 @@ namespace Nz Angle ToRadianAngle() const; String ToString() const; - template> operator Angle(); - template> operator Angle(); + template> operator Angle() const { return ToDegreeAngle(); } // GCC < 8 bug + template> operator Angle() const { return ToRadianAngle(); } // GCC < 8 bug Angle& operator=(const Angle&) = default; diff --git a/include/Nazara/Math/Angle.inl b/include/Nazara/Math/Angle.inl index d50bcb6d1..036ed5943 100644 --- a/include/Nazara/Math/Angle.inl +++ b/include/Nazara/Math/Angle.inl @@ -150,8 +150,8 @@ namespace Nz * \param value value of the angle */ template - Angle::Angle(T value) : - value(value) + Angle::Angle(T angle) : + value(angle) { } @@ -345,23 +345,23 @@ namespace Nz * \brief Returns the degree angle that is equivalent to this one * \return Equivalent degree angle */ - template + /*template template - Angle::operator Angle() + Angle::operator Angle() const { return ToDegreeAngle(); - } + }*/ /*! * \brief Converts the angle to a string representation * \return String representation of the angle */ - template + /*template template - Angle::operator Angle() + Angle::operator Angle() const { return ToRadianAngle(); - } + }*/ /*! * \brief Addition operator From 9674d7373c205373c14a05738f3c9de96ec9a196 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 20 Oct 2018 23:52:32 +0200 Subject: [PATCH 187/194] SDK/PhysicsComponent2D: Add missing parameter to SetMass --- ChangeLog.md | 1 + SDK/include/NDK/Components/PhysicsComponent2D.hpp | 2 +- SDK/include/NDK/Components/PhysicsComponent2D.inl | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 43f8aa898..e0091913d 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -221,6 +221,7 @@ Nazara Development Kit: - PhysicsComponent2D now allows massless bodies (zero mass) - ⚠️ Use of the new Angle class instead of floating point angle - Added EntityOwner::Release +- Add missing `recomputeMoment` parameter to PhysicsComponent2D::SetMass # 0.4: diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.hpp b/SDK/include/NDK/Components/PhysicsComponent2D.hpp index 841b2df34..7d040c5a7 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.hpp +++ b/SDK/include/NDK/Components/PhysicsComponent2D.hpp @@ -60,7 +60,7 @@ namespace Ndk inline void SetElasticity(std::size_t shapeIndex, float friction); inline void SetFriction(float friction); inline void SetFriction(std::size_t shapeIndex, float friction); - inline void SetMass(float mass); + inline void SetMass(float mass, bool recomputeMoment = true); inline void SetMassCenter(const Nz::Vector2f& center, Nz::CoordSys coordSys = Nz::CoordSys_Local); inline void SetMomentOfInertia(float moment); inline void SetPosition(const Nz::Vector2f& position); diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.inl b/SDK/include/NDK/Components/PhysicsComponent2D.inl index 35782dcd9..387e50469 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.inl +++ b/SDK/include/NDK/Components/PhysicsComponent2D.inl @@ -429,15 +429,16 @@ namespace Ndk * \brief Sets the mass of the physics object * * \param mass Mass of the object + * \param recomputeMoment Should the moment of inertia be recomputed according to the new mass * * \remark Mass must be positive or zero */ - inline void PhysicsComponent2D::SetMass(float mass) + inline void PhysicsComponent2D::SetMass(float mass, bool recomputeMoment) { NazaraAssert(m_object, "Invalid physics object"); NazaraAssert(mass >= 0.f, "Mass should be positive"); - m_object->SetMass(mass); + m_object->SetMass(mass, recomputeMoment); } /*! From 4e9d4c10da40597cfb851e4a8c52d107363a9ceb Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 21 Oct 2018 13:52:14 +0200 Subject: [PATCH 188/194] Network: Add accessors to ENetHost/ENetPeer --- ChangeLog.md | 3 ++- include/Nazara/Network/ENetHost.hpp | 6 +++++- include/Nazara/Network/ENetHost.inl | 21 +++++++++++++++++++++ include/Nazara/Network/ENetPeer.hpp | 2 ++ include/Nazara/Network/ENetPeer.inl | 11 +++++++++++ 5 files changed, 41 insertions(+), 2 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index e0091913d..669f8cc9e 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -152,7 +152,8 @@ Nazara Engine: - ⚠️ Use of the new Angle class instead of floating point angle - It is now possible to set elasticity/friction/surface bodies of 2D colliders and change it at runtime on RigidBody2D - ObjectHandle were remade and should be way more optimized now - + - Added ENetHost and ENetPeer accessor to total packet/data received/sent/lost + Nazara Development Kit: - Added ImageWidget (#139) - ⚠️ Removed TextAreaWidget::GetLineCount diff --git a/include/Nazara/Network/ENetHost.hpp b/include/Nazara/Network/ENetHost.hpp index 28a2d2da5..01f59234b 100644 --- a/include/Nazara/Network/ENetHost.hpp +++ b/include/Nazara/Network/ENetHost.hpp @@ -58,8 +58,12 @@ namespace Nz void Flush(); - inline Nz::IpAddress GetBoundAddress() const; + inline IpAddress GetBoundAddress() const; inline UInt32 GetServiceTime() const; + inline UInt32 GetTotalReceivedPackets() const; + inline UInt64 GetTotalReceivedData() const; + inline UInt64 GetTotalSentData() const; + inline UInt32 GetTotalSentPackets() const; int Service(ENetEvent* event, UInt32 timeout); diff --git a/include/Nazara/Network/ENetHost.inl b/include/Nazara/Network/ENetHost.inl index 11ee91c80..fcb6bf6de 100644 --- a/include/Nazara/Network/ENetHost.inl +++ b/include/Nazara/Network/ENetHost.inl @@ -2,6 +2,7 @@ // This file is part of the "Nazara Engine - Network module" // For conditions of distribution and use, see copyright notice in Config.hpp +#include #include #include @@ -63,6 +64,26 @@ namespace Nz return m_serviceTime; } + inline UInt32 ENetHost::GetTotalReceivedPackets() const + { + return m_totalReceivedPackets; + } + + inline UInt64 ENetHost::GetTotalReceivedData() const + { + return m_totalReceivedData; + } + + inline UInt64 ENetHost::GetTotalSentData() const + { + return m_totalSentData; + } + + inline UInt32 ENetHost::GetTotalSentPackets() const + { + return m_totalSentPackets; + } + inline void ENetHost::SetCompressor(std::unique_ptr&& compressor) { m_compressor = std::move(compressor); diff --git a/include/Nazara/Network/ENetPeer.hpp b/include/Nazara/Network/ENetPeer.hpp index f2435f579..7cba0d4a5 100644 --- a/include/Nazara/Network/ENetPeer.hpp +++ b/include/Nazara/Network/ENetPeer.hpp @@ -56,6 +56,8 @@ namespace Nz inline UInt16 GetPeerId() const; inline UInt32 GetRoundTripTime() const; inline ENetPeerState GetState() const; + inline UInt32 GetTotalPacketLost() const; + inline UInt32 GetTotalPacketSent() const; inline bool HasPendingCommands(); diff --git a/include/Nazara/Network/ENetPeer.inl b/include/Nazara/Network/ENetPeer.inl index 3f8ffa846..55745ce56 100644 --- a/include/Nazara/Network/ENetPeer.inl +++ b/include/Nazara/Network/ENetPeer.inl @@ -62,6 +62,16 @@ namespace Nz return m_state; } + inline UInt32 ENetPeer::GetTotalPacketLost() const + { + return m_totalPacketLost; + } + + inline UInt32 ENetPeer::GetTotalPacketSent() const + { + return m_totalPacketSent; + } + inline bool ENetPeer::HasPendingCommands() { return m_outgoingReliableCommands.empty() && m_outgoingUnreliableCommands.empty() && m_sentReliableCommands.empty(); @@ -94,3 +104,4 @@ namespace Nz } #include +#include "ENetPeer.hpp" From f3febe5d3490202700a6a2faa55fa655249611aa Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 21 Oct 2018 13:53:06 +0200 Subject: [PATCH 189/194] Network/ENetHost: Comment out warning in case of error --- src/Nazara/Network/ENetHost.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Nazara/Network/ENetHost.cpp b/src/Nazara/Network/ENetHost.cpp index 5744b8743..c5c599b5b 100644 --- a/src/Nazara/Network/ENetHost.cpp +++ b/src/Nazara/Network/ENetHost.cpp @@ -247,7 +247,7 @@ namespace Nz return 1; case -1: - NazaraError("Error receiving incoming packets"); + //NazaraError("Error receiving incoming packets"); return -1; default: @@ -855,9 +855,9 @@ namespace Nz if (channel) { if (!windowWrap && outgoingCommand->sendAttempts < 1 && !(outgoingCommand->reliableSequenceNumber % ENetPeer_ReliableWindowSize) && - ((channel->reliableWindows[(reliableWindow + ENetPeer_ReliableWindows - 1) % ENetPeer_ReliableWindows] >= ENetPeer_ReliableWindowSize) || - channel->usedReliableWindows & ((((1 << ENetPeer_ReliableWindows) - 1) << reliableWindow) | - (((1 << ENetPeer_FreeReliableWindows) - 1) >> (ENetPeer_ReliableWindows - reliableWindow))))) + ((channel->reliableWindows[(reliableWindow + ENetPeer_ReliableWindows - 1) % ENetPeer_ReliableWindows] >= ENetPeer_ReliableWindowSize) || + channel->usedReliableWindows & ((((1 << ENetPeer_ReliableWindows) - 1) << reliableWindow) | + (((1 << ENetPeer_FreeReliableWindows) - 1) >> (ENetPeer_ReliableWindows - reliableWindow))))) windowWrap = true; if (windowWrap) From a292e476738addc2b957ad5a727765a27214bf21 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 24 Oct 2018 20:26:50 +0200 Subject: [PATCH 190/194] Network/ENetPeer: Fix return type of GettotalPacket[Lost|Sent] --- include/Nazara/Network/ENetPeer.hpp | 4 ++-- include/Nazara/Network/ENetPeer.inl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/Nazara/Network/ENetPeer.hpp b/include/Nazara/Network/ENetPeer.hpp index 7cba0d4a5..634f22402 100644 --- a/include/Nazara/Network/ENetPeer.hpp +++ b/include/Nazara/Network/ENetPeer.hpp @@ -56,8 +56,8 @@ namespace Nz inline UInt16 GetPeerId() const; inline UInt32 GetRoundTripTime() const; inline ENetPeerState GetState() const; - inline UInt32 GetTotalPacketLost() const; - inline UInt32 GetTotalPacketSent() const; + inline UInt64 GetTotalPacketLost() const; + inline UInt64 GetTotalPacketSent() const; inline bool HasPendingCommands(); diff --git a/include/Nazara/Network/ENetPeer.inl b/include/Nazara/Network/ENetPeer.inl index 55745ce56..04ec4aae2 100644 --- a/include/Nazara/Network/ENetPeer.inl +++ b/include/Nazara/Network/ENetPeer.inl @@ -62,12 +62,12 @@ namespace Nz return m_state; } - inline UInt32 ENetPeer::GetTotalPacketLost() const + inline UInt64 ENetPeer::GetTotalPacketLost() const { return m_totalPacketLost; } - inline UInt32 ENetPeer::GetTotalPacketSent() const + inline UInt64 ENetPeer::GetTotalPacketSent() const { return m_totalPacketSent; } From 2c0c8ef0a0fc07d3a23b45076bc5dc4e7390e375 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 24 Oct 2018 20:38:20 +0200 Subject: [PATCH 191/194] SDK/PhysicsComponent2D: Add node synchronization --- ChangeLog.md | 1 + .../NDK/Components/PhysicsComponent2D.hpp | 6 ++- .../NDK/Components/PhysicsComponent2D.inl | 37 ++++++++++++++++++- SDK/src/NDK/Systems/PhysicsSystem2D.cpp | 21 +++++++---- 4 files changed, 54 insertions(+), 11 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 669f8cc9e..f821d1910 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -223,6 +223,7 @@ Nazara Development Kit: - ⚠️ Use of the new Angle class instead of floating point angle - Added EntityOwner::Release - Add missing `recomputeMoment` parameter to PhysicsComponent2D::SetMass +- Added possibility of disabling synchronization between PhysicsComponent2D and NodeComponent # 0.4: diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.hpp b/SDK/include/NDK/Components/PhysicsComponent2D.hpp index 7d040c5a7..696a8f99d 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.hpp +++ b/SDK/include/NDK/Components/PhysicsComponent2D.hpp @@ -24,7 +24,7 @@ namespace Ndk friend class ConstraintComponent2D; public: - PhysicsComponent2D() = default; + PhysicsComponent2D(); PhysicsComponent2D(const PhysicsComponent2D& physics); ~PhysicsComponent2D() = default; @@ -36,6 +36,8 @@ namespace Ndk inline bool ClosestPointQuery(const Nz::Vector2f& position, Nz::Vector2f* closestPoint, float* closestDistance) const; + inline void EnableNodeSynchronization(bool nodeSynchronization); + inline Nz::Rectf GetAABB() const; inline float GetAngularDamping() const; inline Nz::RadianAnglef GetAngularVelocity() const; @@ -52,6 +54,7 @@ namespace Ndk inline std::size_t GetShapeCount() const; inline Nz::Vector2f GetVelocity() const; + inline bool IsNodeSynchronizationEnabled() const; inline bool IsSleeping() const; inline void SetAngularDamping(float angularDamping); @@ -81,6 +84,7 @@ namespace Ndk void OnEntityDestruction() override; std::unique_ptr m_object; + bool m_nodeSynchronizationEnabled; }; } diff --git a/SDK/include/NDK/Components/PhysicsComponent2D.inl b/SDK/include/NDK/Components/PhysicsComponent2D.inl index 387e50469..dd90b5f9a 100644 --- a/SDK/include/NDK/Components/PhysicsComponent2D.inl +++ b/SDK/include/NDK/Components/PhysicsComponent2D.inl @@ -7,12 +7,19 @@ namespace Ndk { + /*! + * \brief Constructs a PhysicsComponent2D object by default + */ + inline PhysicsComponent2D::PhysicsComponent2D() : + m_nodeSynchronizationEnabled(true) + { + } + /*! * \brief Constructs a PhysicsComponent2D object by copy semantic * * \param physics PhysicsComponent2D to copy */ - inline PhysicsComponent2D::PhysicsComponent2D(const PhysicsComponent2D& physics) { // No copy of physical object (because we only create it when attached to an entity) @@ -115,6 +122,22 @@ namespace Ndk return m_object->ClosestPointQuery(position, closestPoint, closestDistance); } + /*! + * \brief Enables position/rotation synchronization with the NodeComponent + * + * By default, at every update of the PhysicsSystem2D, the NodeComponent's position and rotation (if any) will be synchronized with + * the values of the PhysicsComponent2D. This function allows to enable/disable this behavior on a per-entity basis. + * + * \param nodeSynchronization Should synchronization occur between NodeComponent and PhysicsComponent2D + */ + inline void PhysicsComponent2D::EnableNodeSynchronization(bool nodeSynchronization) + { + m_nodeSynchronizationEnabled = nodeSynchronization; + + if (m_entity) + m_entity->Invalidate(); + } + /*! * \brief Gets the AABB of the physics object * \return AABB of the object @@ -314,13 +337,23 @@ namespace Ndk return m_object->GetVelocity(); } + /*! + * \brief Checks if position & rotation are synchronized with NodeComponent + * \return true If synchronization is enabled + * + * \see EnableNodeSynchronization + */ + inline bool PhysicsComponent2D::IsNodeSynchronizationEnabled() const + { + return m_nodeSynchronizationEnabled; + } + /*! * \brief Checks whether the entity is currently sleeping * \return true If it is the case * * \remark Produces a NazaraAssert if the physics object is invalid */ - inline bool PhysicsComponent2D::IsSleeping() const { NazaraAssert(m_object, "Invalid physics object"); diff --git a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp index 69d6a99b1..29baeb6a1 100644 --- a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp +++ b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp @@ -147,16 +147,21 @@ namespace Ndk void PhysicsSystem2D::OnEntityValidation(Entity* entity, bool justAdded) { - // It's possible our entity got revalidated because of the addition/removal of a PhysicsComponent3D - if (!justAdded) + if (entity->HasComponent()) { - // We take the opposite array from which the entity should belong to - auto& entities = (entity->HasComponent()) ? m_staticObjects : m_dynamicObjects; - entities.Remove(entity); - } + if (entity->GetComponent().IsNodeSynchronizationEnabled()) + m_dynamicObjects.Insert(entity); + else + m_dynamicObjects.Remove(entity); - auto& entities = (entity->HasComponent()) ? m_dynamicObjects : m_staticObjects; - entities.Insert(entity); + m_staticObjects.Remove(entity); + } + else + { + m_dynamicObjects.Remove(entity); + m_staticObjects.Insert(entity); + + } if (!m_physWorld) CreatePhysWorld(); From fa7cbc21e59345dd7b737bcb44cb2e88fc4f01f9 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 24 Oct 2018 20:54:11 +0200 Subject: [PATCH 192/194] SDK/PhysicsSystem2D: Fix initial position/rotation --- SDK/src/NDK/Systems/PhysicsSystem2D.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp index 29baeb6a1..6579bb1fb 100644 --- a/SDK/src/NDK/Systems/PhysicsSystem2D.cpp +++ b/SDK/src/NDK/Systems/PhysicsSystem2D.cpp @@ -161,6 +161,17 @@ namespace Ndk m_dynamicObjects.Remove(entity); m_staticObjects.Insert(entity); + // If entities just got added to the system, teleport them to their NodeComponent position/rotation + // This will prevent the physics engine to mess with the scene while correcting position/rotation + if (justAdded) + { + auto& collision = entity->GetComponent(); + auto& node = entity->GetComponent(); + + Nz::RigidBody2D* physObj = collision.GetStaticBody(); + physObj->SetPosition(Nz::Vector2f(node.GetPosition())); + //physObj->SetRotation(node.GetRotation()); + } } if (!m_physWorld) From ed46c87781804ad07ff2768eb0750afbafd9f721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Sun, 28 Oct 2018 01:53:11 +0200 Subject: [PATCH 193/194] Refactor the way resources are loaded (#191) * WIP * WIP * Font works * WIP: Only Music remains * Looks like it's working * Fix oopsie * Core/ObjectRef: Add cast functions * Update ChangeLog.md * Audio/SoundStream: Make sound stream thread-safe --- ChangeLog.md | 2 + SDK/include/NDK/LuaAPI.inl | 16 +- SDK/src/NDK/Lua/LuaBinding_Audio.cpp | 4 +- SDK/src/NDK/Lua/LuaBinding_Graphics.cpp | 7 +- SDK/src/NDK/Lua/LuaBinding_Renderer.cpp | 30 +- SDK/src/NDK/Lua/LuaBinding_Utility.cpp | 4 +- SDK/src/NDK/Widgets/CheckboxWidget.cpp | 6 +- examples/FirstScene/main.cpp | 10 +- examples/MeshInfos/main.cpp | 32 +- examples/Particles/LogoDemo.cpp | 17 +- examples/Particles/LogoDemo.hpp | 2 +- examples/Particles/SpacebattleDemo.cpp | 57 +- examples/Particles/SpacebattleDemo.hpp | 12 +- include/Nazara/Audio/Music.hpp | 26 +- include/Nazara/Audio/SoundBuffer.hpp | 15 +- include/Nazara/Audio/SoundStream.hpp | 30 +- include/Nazara/Core/ObjectRef.hpp | 4 + include/Nazara/Core/ObjectRef.inl | 55 ++ include/Nazara/Core/ResourceLoader.hpp | 14 +- include/Nazara/Core/ResourceLoader.inl | 44 +- include/Nazara/Core/ResourceManager.inl | 8 +- include/Nazara/Graphics/Material.hpp | 9 +- include/Nazara/Graphics/Material.inl | 74 +-- include/Nazara/Graphics/Model.hpp | 8 +- include/Nazara/Graphics/Model.inl | 1 - include/Nazara/Graphics/SkeletalModel.hpp | 14 +- include/Nazara/Graphics/SkeletalModel.inl | 27 + include/Nazara/Renderer/Texture.hpp | 45 +- include/Nazara/Utility/Animation.hpp | 8 +- include/Nazara/Utility/Font.hpp | 9 +- include/Nazara/Utility/Image.hpp | 37 +- include/Nazara/Utility/Mesh.hpp | 8 +- plugins/Assimp/Plugin.cpp | 11 +- src/Nazara/Audio/Formats/sndfileLoader.cpp | 99 ++-- src/Nazara/Audio/Music.cpp | 57 +- src/Nazara/Audio/Sound.cpp | 12 +- src/Nazara/Audio/SoundBuffer.cpp | 36 +- src/Nazara/Audio/SoundStream.cpp | 22 + src/Nazara/Graphics/Formats/MeshLoader.cpp | 65 +-- src/Nazara/Graphics/Formats/TextureLoader.cpp | 12 +- .../Graphics/GuillotineTextureAtlas.cpp | 2 +- src/Nazara/Graphics/Model.cpp | 77 ++- src/Nazara/Graphics/SkeletalModel.cpp | 42 -- src/Nazara/Renderer/Texture.cpp | 516 ++++++++---------- src/Nazara/Utility/Animation.cpp | 30 +- src/Nazara/Utility/Font.cpp | 36 +- src/Nazara/Utility/Formats/DDSLoader.cpp | 12 +- src/Nazara/Utility/Formats/FreeTypeLoader.cpp | 31 +- src/Nazara/Utility/Formats/MD2Loader.cpp | 11 +- src/Nazara/Utility/Formats/MD5AnimLoader.cpp | 7 +- src/Nazara/Utility/Formats/MD5MeshLoader.cpp | 14 +- src/Nazara/Utility/Formats/OBJLoader.cpp | 7 +- src/Nazara/Utility/Formats/PCXLoader.cpp | 33 +- src/Nazara/Utility/Formats/STBLoader.cpp | 20 +- src/Nazara/Utility/GuillotineImageAtlas.cpp | 3 +- src/Nazara/Utility/Image.cpp | 246 ++++----- src/Nazara/Utility/Mesh.cpp | 30 +- tests/Engine/Audio/Music.cpp | 20 +- tests/Engine/Audio/SoundBuffer.cpp | 9 +- tests/Engine/Graphics/Billboard.cpp | 3 +- tests/Engine/Graphics/Model.cpp | 4 +- tests/Engine/Graphics/SkeletalModel.cpp | 19 +- tests/Engine/Graphics/SkyboxBackground.cpp | 3 +- tests/Engine/Graphics/TextureBackground.cpp | 5 +- 64 files changed, 1058 insertions(+), 1071 deletions(-) create mode 100644 include/Nazara/Graphics/SkeletalModel.inl diff --git a/ChangeLog.md b/ChangeLog.md index f821d1910..ad2dd0a55 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -153,6 +153,8 @@ Nazara Engine: - It is now possible to set elasticity/friction/surface bodies of 2D colliders and change it at runtime on RigidBody2D - ObjectHandle were remade and should be way more optimized now - Added ENetHost and ENetPeer accessor to total packet/data received/sent/lost +- ⚠ **Changed the way resources were Loaded, almost every LoadFromX and OpenFromX methods are now static and create the object themselves.** +- ⚠ SoundStream is now responsible for loaders instead of Music, and is now threadsafe (you can now load a stream only once and play it multiple times at the same time) Nazara Development Kit: - Added ImageWidget (#139) diff --git a/SDK/include/NDK/LuaAPI.inl b/SDK/include/NDK/LuaAPI.inl index 40fe33ec7..e2b1095dc 100644 --- a/SDK/include/NDK/LuaAPI.inl +++ b/SDK/include/NDK/LuaAPI.inl @@ -402,7 +402,7 @@ namespace Nz return 1; } - inline unsigned int LuaImplQueryArg(const LuaState& state, int index, MusicParams* params, TypeTag) + inline unsigned int LuaImplQueryArg(const LuaState& state, int index, SoundBufferParams* params, TypeTag) { state.CheckType(index, Nz::LuaType_Table); @@ -411,7 +411,7 @@ namespace Nz return 1; } - inline unsigned int LuaImplQueryArg(const LuaState& state, int index, SoundBufferParams* params, TypeTag) + inline unsigned int LuaImplQueryArg(const LuaState& state, int index, SoundStreamParams* params, TypeTag) { state.CheckType(index, Nz::LuaType_Table); @@ -635,12 +635,24 @@ namespace Nz return 1; } + inline int LuaImplReplyVal(const LuaState& state, ModelRef&& handle, TypeTag) + { + state.PushInstance("Model", handle); + return 1; + } + inline int LuaImplReplyVal(const LuaState& state, const SoundBuffer* val, TypeTag) { state.PushInstance("SoundBuffer", val); return 1; } + inline int LuaImplReplyVal(const LuaState& state, SoundBufferRef&& handle, TypeTag) + { + state.PushInstance("SoundBuffer", handle); + return 1; + } + inline int LuaImplReplyVal(const LuaState& state, SpriteRef&& handle, TypeTag) { state.PushInstance("Sprite", handle); diff --git a/SDK/src/NDK/Lua/LuaBinding_Audio.cpp b/SDK/src/NDK/Lua/LuaBinding_Audio.cpp index 1611c1b8c..c95b5d0ce 100644 --- a/SDK/src/NDK/Lua/LuaBinding_Audio.cpp +++ b/SDK/src/NDK/Lua/LuaBinding_Audio.cpp @@ -67,7 +67,7 @@ namespace Ndk music.BindMethod("IsLooping", &Nz::Music::IsLooping); - music.BindMethod("OpenFromFile", &Nz::Music::OpenFromFile, Nz::MusicParams()); + music.BindMethod("OpenFromFile", &Nz::Music::OpenFromFile, Nz::SoundStreamParams()); music.BindMethod("Pause", &Nz::Music::Pause); music.BindMethod("Play", &Nz::Music::Play); @@ -138,7 +138,7 @@ namespace Ndk soundBuffer.BindMethod("IsValid", &Nz::SoundBuffer::IsValid); - soundBuffer.BindMethod("LoadFromFile", &Nz::SoundBuffer::LoadFromFile, Nz::SoundBufferParams()); + soundBuffer.BindStaticMethod("LoadFromFile", &Nz::SoundBuffer::LoadFromFile, Nz::SoundBufferParams()); soundBuffer.BindStaticMethod("IsFormatSupported", &Nz::SoundBuffer::IsFormatSupported); diff --git a/SDK/src/NDK/Lua/LuaBinding_Graphics.cpp b/SDK/src/NDK/Lua/LuaBinding_Graphics.cpp index 14105eb3c..fc764866a 100644 --- a/SDK/src/NDK/Lua/LuaBinding_Graphics.cpp +++ b/SDK/src/NDK/Lua/LuaBinding_Graphics.cpp @@ -181,8 +181,6 @@ namespace Ndk material.BindMethod("IsShadowCastingEnabled", &Nz::Material::IsShadowCastingEnabled); material.BindMethod("IsShadowReceiveEnabled", &Nz::Material::IsShadowReceiveEnabled); - material.BindMethod("LoadFromFile", &Nz::Material::LoadFromFile, Nz::MaterialParams()); - material.BindMethod("Reset", &Nz::Material::Reset); material.BindMethod("SetAlphaThreshold", &Nz::Material::SetAlphaThreshold); @@ -205,6 +203,7 @@ namespace Ndk material.BindMethod("SetSrcBlend", &Nz::Material::SetSrcBlend); material.BindStaticMethod("GetDefault", &Nz::Material::GetDefault); + material.BindStaticMethod("LoadFromFile", &Nz::Material::LoadFromFile, Nz::MaterialParams()); material.BindMethod("SetAlphaMap", [] (Nz::LuaState& lua, Nz::MaterialRef& instance, std::size_t /*argumentCount*/) -> int { @@ -308,8 +307,6 @@ namespace Ndk //modelClass.SetMethod("GetMesh", &Nz::Model::GetMesh); model.BindMethod("IsAnimated", &Nz::Model::IsAnimated); - model.BindMethod("LoadFromFile", &Nz::Model::LoadFromFile, Nz::ModelParameters()); - model.BindMethod("SetMaterial", [] (Nz::LuaState& lua, Nz::Model* instance, std::size_t argumentCount) -> int { @@ -371,6 +368,8 @@ namespace Ndk //modelClass.SetMethod("SetMesh", &Nz::Model::SetMesh); //modelClass.SetMethod("SetSequence", &Nz::Model::SetSequence); + + model.BindStaticMethod("LoadFromFile", &Nz::Model::LoadFromFile, Nz::ModelParameters()); } /*********************************** Nz::Sprite ***********************************/ diff --git a/SDK/src/NDK/Lua/LuaBinding_Renderer.cpp b/SDK/src/NDK/Lua/LuaBinding_Renderer.cpp index 108941880..8aacf2a1f 100644 --- a/SDK/src/NDK/Lua/LuaBinding_Renderer.cpp +++ b/SDK/src/NDK/Lua/LuaBinding_Renderer.cpp @@ -44,21 +44,6 @@ namespace Ndk texture.BindMethod("InvalidateMipmaps", &Nz::Texture::InvalidateMipmaps); texture.BindMethod("IsValid", &Nz::Texture::IsValid); - texture.BindMethod("LoadFromFile", &Nz::Texture::LoadFromFile, true, Nz::ImageParams()); - //bool LoadFromImage(const Image& image, bool generateMipmaps = true); - //bool LoadFromMemory(const void* data, std::size_t size, const ImageParams& params = ImageParams(), bool generateMipmaps = true); - //bool LoadFromStream(Stream& stream, const ImageParams& params = ImageParams(), bool generateMipmaps = true); - - texture.BindMethod("LoadArrayFromFile", &Nz::Texture::LoadArrayFromFile, Nz::Vector2ui(2, 2), true, Nz::ImageParams()); - //bool LoadArrayFromImage(const Image& image, bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); - //bool LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); - //bool LoadArrayFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); - - //bool LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); - //bool LoadCubemapFromImage(const Image& image, bool generateMipmaps = true, const CubemapParams& params = CubemapParams()); - //bool LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); - //bool LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); - texture.BindMethod("LoadFaceFromFile", &Nz::Texture::LoadFaceFromFile, Nz::ImageParams()); //bool LoadFaceFromMemory(CubemapFace face, const void* data, std::size_t size, const ImageParams& params = ImageParams()); //bool LoadFaceFromStream(CubemapFace face, Stream& stream, const ImageParams& params = ImageParams()); @@ -71,6 +56,21 @@ namespace Ndk texture.BindStaticMethod("IsFormatSupported", &Nz::Texture::IsFormatSupported); texture.BindStaticMethod("IsMipmappingSupported", &Nz::Texture::IsMipmappingSupported); texture.BindStaticMethod("IsTypeSupported", &Nz::Texture::IsTypeSupported); + + texture.BindStaticMethod("LoadFromFile", &Nz::Texture::LoadFromFile, true, Nz::ImageParams()); + //TextureRef LoadFromImage(const Image& image, bool generateMipmaps = true); + //TextureRef LoadFromMemory(const void* data, std::size_t size, const ImageParams& params = ImageParams(), bool generateMipmaps = true); + //TextureRef LoadFromStream(Stream& stream, const ImageParams& params = ImageParams(), bool generateMipmaps = true); + + texture.BindStaticMethod("LoadArrayFromFile", &Nz::Texture::LoadArrayFromFile, Nz::Vector2ui(2, 2), true, Nz::ImageParams()); + //TextureRef LoadArrayFromImage(const Image& image, bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); + //TextureRef LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); + //TextureRef LoadArrayFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); + + //TextureRef LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); + //TextureRef LoadCubemapFromImage(const Image& image, bool generateMipmaps = true, const CubemapParams& params = CubemapParams()); + //TextureRef LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); + //TextureRef LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); } /*********************************** Nz::TextureLibrary ***********************************/ diff --git a/SDK/src/NDK/Lua/LuaBinding_Utility.cpp b/SDK/src/NDK/Lua/LuaBinding_Utility.cpp index 5fdd52d01..43ea4a8c7 100644 --- a/SDK/src/NDK/Lua/LuaBinding_Utility.cpp +++ b/SDK/src/NDK/Lua/LuaBinding_Utility.cpp @@ -148,8 +148,6 @@ namespace Ndk font.BindMethod("Precache", (bool(Nz::Font::*)(unsigned int, Nz::UInt32, const Nz::String&) const) &Nz::Font::Precache); - font.BindMethod("OpenFromFile", &Nz::Font::OpenFromFile, Nz::FontParams()); - font.BindMethod("SetGlyphBorder", &Nz::Font::SetGlyphBorder); font.BindMethod("SetMinimumStepSize", &Nz::Font::SetMinimumStepSize); @@ -157,6 +155,8 @@ namespace Ndk font.BindStaticMethod("GetDefaultGlyphBorder", &Nz::Font::GetDefaultGlyphBorder); font.BindStaticMethod("GetDefaultMinimumStepSize", &Nz::Font::GetDefaultMinimumStepSize); + font.BindStaticMethod("OpenFromFile", &Nz::Font::OpenFromFile, Nz::FontParams()); + font.BindStaticMethod("SetDefaultGlyphBorder", &Nz::Font::SetDefaultGlyphBorder); font.BindStaticMethod("SetDefaultMinimumStepSize", &Nz::Font::SetDefaultMinimumStepSize); } diff --git a/SDK/src/NDK/Widgets/CheckboxWidget.cpp b/SDK/src/NDK/Widgets/CheckboxWidget.cpp index 7ea3969de..7d906d8d1 100644 --- a/SDK/src/NDK/Widgets/CheckboxWidget.cpp +++ b/SDK/src/NDK/Widgets/CheckboxWidget.cpp @@ -57,14 +57,14 @@ namespace Ndk #include }; - Nz::TextureRef checkmarkTexture = Nz::Texture::New(); - if (!checkmarkTexture->LoadFromMemory(r_checkmark, sizeof(r_checkmark) / sizeof(r_checkmark[0]))) + Nz::TextureRef checkmarkTexture = Nz::Texture::LoadFromMemory(r_checkmark, sizeof(r_checkmark) / sizeof(r_checkmark[0])); + if (!checkmarkTexture) { NazaraError("Failed to load embedded checkmark"); return false; } - Nz::TextureLibrary::Register("Ndk::CheckboxWidget::checkmark", checkmarkTexture); + Nz::TextureLibrary::Register("Ndk::CheckboxWidget::checkmark", std::move(checkmarkTexture)); return true; } diff --git a/examples/FirstScene/main.cpp b/examples/FirstScene/main.cpp index a4ce40454..0e3f8f8a2 100644 --- a/examples/FirstScene/main.cpp +++ b/examples/FirstScene/main.cpp @@ -56,8 +56,8 @@ int main() // En réalité les textures "cubemap" regroupent six faces en une, pour faciliter leur utilisation. // Nous créons une nouvelle texture et prenons une référence sur celle-ci (à la manière des pointeurs intelligents) - Nz::TextureRef texture = Nz::Texture::New(); - if (texture->LoadCubemapFromFile("resources/skybox-space.png")) + Nz::TextureRef texture = Nz::Texture::LoadCubemapFromFile("resources/skybox-space.png"); + if (texture) { // Si la création du cubemap a fonctionné @@ -83,9 +83,6 @@ int main() // Les modèles représentent, globalement, tout ce qui est visible en trois dimensions. // Nous choisirons ici un vaisseau spatial (Quoi de mieux pour une scène spatiale ?) - // Encore une fois, nous récupérons une référence plutôt que l'objet lui-même (cela va être très utile par la suite) - Nz::ModelRef spaceshipModel = Nz::Model::New(); - // Nous allons charger notre modèle depuis un fichier, mais nous pouvons ajuster le modèle lors du chargement via // une structure permettant de paramétrer le chargement des modèles Nz::ModelParameters params; @@ -104,7 +101,8 @@ int main() // On charge ensuite le modèle depuis son fichier // Le moteur va charger le fichier et essayer de retrouver les fichiers associés (comme les matériaux, textures, ...) - if (!spaceshipModel->LoadFromFile("resources/Spaceship/spaceship.obj", params)) + Nz::ModelRef spaceshipModel = Nz::Model::LoadFromFile("resources/Spaceship/spaceship.obj", params); + if (!spaceshipModel) { // Si le chargement a échoué (fichier inexistant/invalide), il ne sert à rien de continuer std::cout << "Failed to load spaceship" << std::endl; diff --git a/examples/MeshInfos/main.cpp b/examples/MeshInfos/main.cpp index bac5398fe..e7b3feaeb 100644 --- a/examples/MeshInfos/main.cpp +++ b/examples/MeshInfos/main.cpp @@ -71,15 +71,15 @@ int main() if (iChoice == 0) break; - Nz::Mesh mesh; - if (!mesh.LoadFromFile(resourceDirectory.GetPath() + '/' + models[iChoice-1])) + Nz::MeshRef mesh = Nz::Mesh::LoadFromFile(resourceDirectory.GetPath() + '/' + models[iChoice-1]); + if (!mesh) { std::cout << "Failed to load mesh" << std::endl; std::getchar(); return EXIT_FAILURE; } - switch (mesh.GetAnimationType()) + switch (mesh->GetAnimationType()) { case Nz::AnimationType_Skeletal: std::cout << "This is a skeletal-animated mesh" << std::endl; @@ -92,13 +92,13 @@ int main() // Inutile de faire un case default (GetAnimationType renverra toujours une valeur correcte) } - std::cout << "It has a total of " << mesh.GetVertexCount() << " vertices for " << mesh.GetSubMeshCount() << " submesh(es)." << std::endl; + std::cout << "It has a total of " << mesh->GetVertexCount() << " vertices for " << mesh->GetSubMeshCount() << " submesh(es)." << std::endl; - if (mesh.IsAnimable()) + if (mesh->IsAnimable()) { - if (mesh.GetAnimationType() == Nz::AnimationType_Skeletal) + if (mesh->GetAnimationType() == Nz::AnimationType_Skeletal) { - const Nz::Skeleton* skeleton = mesh.GetSkeleton(); + const Nz::Skeleton* skeleton = mesh->GetSkeleton(); unsigned int jointCount = skeleton->GetJointCount(); std::cout << "It has a skeleton made of " << skeleton->GetJointCount() << " joint(s)." << std::endl; std::cout << "Print joints ? (Y/N) "; @@ -123,14 +123,14 @@ int main() } } - Nz::String animationPath = mesh.GetAnimation(); + Nz::String animationPath = mesh->GetAnimation(); if (!animationPath.IsEmpty()) { - Nz::Animation animation; - if (animation.LoadFromFile(animationPath)) + Nz::AnimationRef animation = Nz::Animation::LoadFromFile(animationPath); + if (animation) { - unsigned int sequenceCount = animation.GetSequenceCount(); - std::cout << "It has an animation made of " << animation.GetFrameCount() << " frame(s) for " << sequenceCount << " sequence(s)." << std::endl; + unsigned int sequenceCount = animation->GetSequenceCount(); + std::cout << "It has an animation made of " << animation->GetFrameCount() << " frame(s) for " << sequenceCount << " sequence(s)." << std::endl; std::cout << "Print sequences ? (Y/N) "; char cChoice; @@ -141,7 +141,7 @@ int main() { for (unsigned int i = 0; i < sequenceCount; ++i) { - const Nz::Sequence* sequence = animation.GetSequence(i); + const Nz::Sequence* sequence = animation->GetSequence(i); std::cout << "\t" << (i+1) << ": " << sequence->name << std::endl; std::cout << "\t\tStart frame: " << sequence->firstFrame << std::endl; std::cout << "\t\tFrame count: " << sequence->frameCount << std::endl; @@ -157,10 +157,10 @@ int main() std::cout << "It's animable but has no animation information" << std::endl; } - Nz::Boxf cube = mesh.GetAABB(); + Nz::Boxf cube = mesh->GetAABB(); std::cout << "Mesh is " << cube.width << " units wide, " << cube.height << " units height and " << cube.depth << " units depth" << std::endl; - unsigned int materialCount = mesh.GetMaterialCount(); + unsigned int materialCount = mesh->GetMaterialCount(); std::cout << "It has " << materialCount << " materials registred" << std::endl; std::cout << "Print materials ? (Y/N) "; @@ -172,7 +172,7 @@ int main() { for (unsigned int i = 0; i < materialCount; ++i) { - const Nz::ParameterList& matData = mesh.GetMaterialData(i); + const Nz::ParameterList& matData = mesh->GetMaterialData(i); Nz::String data; if (!matData.GetStringParameter(Nz::MaterialData::FilePath, &data)) diff --git a/examples/Particles/LogoDemo.cpp b/examples/Particles/LogoDemo.cpp index 0811191e1..f04ce43ad 100644 --- a/examples/Particles/LogoDemo.cpp +++ b/examples/Particles/LogoDemo.cpp @@ -107,7 +107,7 @@ class SpriteRenderer : public Nz::ParticleRenderer { } - void Render(const Nz::ParticleGroup& system, const Nz::ParticleMapper& mapper, unsigned int startId, unsigned int endId, Nz::AbstractRenderQueue* renderQueue) + void Render(const Nz::ParticleGroup& system, const Nz::ParticleMapper& mapper, unsigned int startId, unsigned int endId, Nz::AbstractRenderQueue* renderQueue) override { Nz::Vector2f size(1.f, 1.f); Nz::SparsePtr sizePtr(&size, 0); @@ -126,18 +126,19 @@ ParticleDemo("Logo", sharedData) Nz::ImageParams params; params.loadFormat = Nz::PixelFormatType_RGBA8; - if (!m_logo.LoadFromFile("resources/Logo.png", params)) + m_logo = Nz::Image::LoadFromFile("resources/Logo.png", params); + if (!m_logo) NazaraError("Failed to load logo!"); - unsigned int width = m_logo.GetWidth(); - unsigned int height = m_logo.GetHeight(); + unsigned int width = m_logo->GetWidth(); + unsigned int height = m_logo->GetHeight(); m_pixels.reserve(width * height); for (unsigned int x = 0; x < width; ++x) { for (unsigned int y = 0; y < height; ++y) { - Nz::Color color = m_logo.GetPixelColor(x, y); + Nz::Color color = m_logo->GetPixelColor(x, y); if (color.a == 0) continue; @@ -173,8 +174,8 @@ void LogoExample::Enter(Ndk::StateMachine& fsm) m_shared.world3D->GetSystem().SetDefaultBackground(nullptr); - Nz::TextureRef backgroundTexture = Nz::Texture::New(); - if (backgroundTexture->LoadFromFile("resources/stars-background.jpg")) + Nz::TextureRef backgroundTexture = Nz::Texture::LoadFromFile("resources/stars-background.jpg"); + if (backgroundTexture) m_shared.world2D->GetSystem().SetDefaultBackground(Nz::TextureBackground::New(std::move(backgroundTexture))); Ndk::EntityHandle particleGroupEntity = m_shared.world2D->CreateEntity(); @@ -254,7 +255,7 @@ void LogoExample::ResetParticles(float elapsed) Nz::Vector2ui size = m_shared.target->GetSize(); Nz::Vector2f center = {size.x / 2.f, size.y / 2.f}; - Nz::Vector2f offset = center - Nz::Vector2f(Nz::Vector2ui(m_logo.GetSize()) / 2); + Nz::Vector2f offset = center - Nz::Vector2f(Nz::Vector2ui(m_logo->GetSize()) / 2); std::uniform_real_distribution disX(0.f, float(size.x)); std::uniform_real_distribution disY(-float(size.y) * 0.5f, float(size.y) * 1.5f); diff --git a/examples/Particles/LogoDemo.hpp b/examples/Particles/LogoDemo.hpp index 7ce594080..bd0536edf 100644 --- a/examples/Particles/LogoDemo.hpp +++ b/examples/Particles/LogoDemo.hpp @@ -32,7 +32,7 @@ class LogoExample : public ParticleDemo Nz::BackgroundRef m_oldBackground; void* m_particles; Nz::Clock m_mouseClock; - Nz::Image m_logo; + Nz::ImageRef m_logo; Nz::ParticleControllerRef m_controller; Nz::ParticleDeclarationRef m_declaration; Nz::ParticleRendererRef m_renderer; diff --git a/examples/Particles/SpacebattleDemo.cpp b/examples/Particles/SpacebattleDemo.cpp index 2bd30940c..65336ad13 100644 --- a/examples/Particles/SpacebattleDemo.cpp +++ b/examples/Particles/SpacebattleDemo.cpp @@ -234,52 +234,59 @@ ParticleDemo("Space battle", sharedData) Nz::Color grey(100, 100, 100); - if (!m_turret.baseModel.LoadFromFile("resources/Turret/base.obj", parameters)) + m_turret.baseModel = Nz::Model::LoadFromFile("resources/Turret/base.obj", parameters); + if (!m_turret.baseModel) NazaraWarning("Failed to load base.obj"); - for (unsigned int i = 0; i < m_turret.baseModel.GetMaterialCount(); ++i) - m_turret.baseModel.GetMaterial(i)->SetDiffuseColor(grey); + for (unsigned int i = 0; i < m_turret.baseModel->GetMaterialCount(); ++i) + m_turret.baseModel->GetMaterial(i)->SetDiffuseColor(grey); - if (!m_turret.rotatingBaseModel.LoadFromFile("resources/Turret/rotating_base.obj", parameters)) + m_turret.rotatingBaseModel = Nz::Model::LoadFromFile("resources/Turret/rotating_base.obj", parameters); + if (!m_turret.rotatingBaseModel) NazaraWarning("Failed to load rotating_base.obj"); - for (unsigned int i = 0; i < m_turret.rotatingBaseModel.GetMaterialCount(); ++i) - m_turret.rotatingBaseModel.GetMaterial(i)->SetDiffuseColor(grey); + for (unsigned int i = 0; i < m_turret.rotatingBaseModel->GetMaterialCount(); ++i) + m_turret.rotatingBaseModel->GetMaterial(i)->SetDiffuseColor(grey); - if (!m_turret.cannonBaseModel.LoadFromFile("resources/Turret/cannon_base.obj", parameters)) + m_turret.cannonBaseModel = Nz::Model::LoadFromFile("resources/Turret/cannon_base.obj", parameters); + if (!m_turret.cannonBaseModel) NazaraWarning("Failed to load cannon_base.obj"); - for (unsigned int i = 0; i < m_turret.cannonBaseModel.GetMaterialCount(); ++i) - m_turret.cannonBaseModel.GetMaterial(i)->SetDiffuseColor(grey); + for (unsigned int i = 0; i < m_turret.cannonBaseModel->GetMaterialCount(); ++i) + m_turret.cannonBaseModel->GetMaterial(i)->SetDiffuseColor(grey); parameters.mesh.texCoordScale.Set(40.f, 40.f); parameters.mesh.matrix = Nz::Matrix4f::Rotate(Nz::EulerAnglesf(0.f, 180.f, 0.f)); - if (!m_turret.cannonModel.LoadFromFile("resources/Turret/cannon.obj", parameters)) + + m_turret.cannonModel = Nz::Model::LoadFromFile("resources/Turret/cannon.obj", parameters); + if (!m_turret.cannonModel) NazaraWarning("Failed to load cannon.obj"); - // Since OBJ don't support normal maps.. - m_turret.cannonModel.GetMaterial(0)->SetNormalMap("resources/Turret/198_norm.jpg"); + // Since OBJ doesn't support normal maps.. + m_turret.cannonModel->GetMaterial(0)->SetNormalMap("resources/Turret/198_norm.jpg"); parameters.mesh.matrix.MakeIdentity(); parameters.mesh.texCoordScale.Set(1.f, 1.f); parameters.mesh.center = true; - if (!m_spacestationModel.LoadFromFile("resources/SpaceStation/space_station.obj", parameters)) + m_spacestationModel = Nz::Model::LoadFromFile("resources/SpaceStation/space_station.obj", parameters); + if (!m_spacestationModel) NazaraWarning("Failed to load space_station.obj"); - m_spacestationModel.GetMesh()->GenerateNormalsAndTangents(); + m_spacestationModel->GetMesh()->GenerateNormalsAndTangents(); parameters.mesh.texCoordScale.Set(1.f, -1.f); parameters.mesh.matrix.MakeRotation(Nz::EulerAnglesf(0.f, -90.f, 0.f)); - if (!m_spaceshipModel.LoadFromFile("resources/space_frigate_6/space_frigate_6.obj", parameters)) + m_spaceshipModel = Nz::Model::LoadFromFile("resources/space_frigate_6/space_frigate_6.obj", parameters); + if (!m_spaceshipModel) NazaraWarning("Failed to load space_frigate_6.obj"); - // Since OBJ don't support normal maps.. - for (unsigned int i = 0; i < m_spaceshipModel.GetMaterialCount(); ++i) + // Since OBJ doesn't support normal maps.. + for (unsigned int i = 0; i < m_spaceshipModel->GetMaterialCount(); ++i) { - m_spaceshipModel.GetMaterial(i)->SetEmissiveMap("resources/space_frigate_6/space_frigate_6_illumination.jpg"); - m_spaceshipModel.GetMaterial(i)->SetNormalMap("resources/space_frigate_6/space_frigate_6_normal.png"); + m_spaceshipModel->GetMaterial(i)->SetEmissiveMap("resources/space_frigate_6/space_frigate_6_illumination.jpg"); + m_spaceshipModel->GetMaterial(i)->SetNormalMap("resources/space_frigate_6/space_frigate_6_normal.png"); } Nz::TextureRef skyboxCubemap = Nz::Texture::New(); @@ -324,7 +331,7 @@ ParticleDemo("Space battle", sharedData) m_spaceshipTemplate->AddComponent(); m_spaceshipTemplate->AddComponent(); auto& gfxComponent = m_spaceshipTemplate->AddComponent(); - gfxComponent.Attach(&m_spaceshipModel); + gfxComponent.Attach(m_spaceshipModel); m_ambientMusic.OpenFromFile("resources/ambience.ogg"); m_ambientMusic.SetVolume(60.f); @@ -762,7 +769,7 @@ void SpacebattleExample::CreateSpaceShip() spacestationNode.SetScale(0.1f); Ndk::GraphicsComponent& spacestationGfx = m_spacestationEntity->AddComponent(); - spacestationGfx.Attach(&m_spacestationModel); + spacestationGfx.Attach(m_spacestationModel); } void SpacebattleExample::CreateTurret() @@ -776,7 +783,7 @@ void SpacebattleExample::CreateTurret() baseNode.SetRotation(Nz::EulerAnglesf(0.f, 180.f, 0.f)); Ndk::GraphicsComponent& baseGfx = m_turret.baseEntity->AddComponent(); - baseGfx.Attach(&m_turret.baseModel); + baseGfx.Attach(m_turret.baseModel); // Rotating base m_turret.rotatingBaseEntity = m_shared.world3D->CreateEntity(); @@ -786,7 +793,7 @@ void SpacebattleExample::CreateTurret() rotatingBaseNode.SetParent(m_turret.baseEntity); Ndk::GraphicsComponent& rotatingBaseGfx = m_turret.rotatingBaseEntity->AddComponent(); - rotatingBaseGfx.Attach(&m_turret.rotatingBaseModel); + rotatingBaseGfx.Attach(m_turret.rotatingBaseModel); // Cannon base m_turret.cannonBaseEntity = m_shared.world3D->CreateEntity(); @@ -797,7 +804,7 @@ void SpacebattleExample::CreateTurret() cannonBaseNode.SetParent(m_turret.rotatingBaseEntity); Ndk::GraphicsComponent& cannonBaseGfx = m_turret.cannonBaseEntity->AddComponent(); - cannonBaseGfx.Attach(&m_turret.cannonBaseModel); + cannonBaseGfx.Attach(m_turret.cannonBaseModel); // Cannon anchor m_turret.cannonAnchorEntity = m_shared.world3D->CreateEntity(); @@ -816,7 +823,7 @@ void SpacebattleExample::CreateTurret() cannonNode.SetRotation(Nz::EulerAnglesf(0.f, 180.f, 0.f)); Ndk::GraphicsComponent& cannonGfx = m_turret.cannonEntity->AddComponent(); - cannonGfx.Attach(&m_turret.cannonModel); + cannonGfx.Attach(m_turret.cannonModel); } void SpacebattleExample::OnMouseMoved(const Nz::EventHandler* /*eventHandler*/, const Nz::WindowEvent::MouseMoveEvent& event) diff --git a/examples/Particles/SpacebattleDemo.hpp b/examples/Particles/SpacebattleDemo.hpp index a41be7504..e0b928e19 100644 --- a/examples/Particles/SpacebattleDemo.hpp +++ b/examples/Particles/SpacebattleDemo.hpp @@ -33,10 +33,10 @@ class SpacebattleExample : public ParticleDemo struct Turret { - Nz::Model baseModel; - Nz::Model cannonModel; - Nz::Model cannonBaseModel; - Nz::Model rotatingBaseModel; + Nz::ModelRef baseModel; + Nz::ModelRef cannonModel; + Nz::ModelRef cannonBaseModel; + Nz::ModelRef rotatingBaseModel; Ndk::EntityHandle baseEntity; Ndk::EntityHandle cannonAnchorEntity; Ndk::EntityHandle cannonEntity; @@ -50,8 +50,8 @@ class SpacebattleExample : public ParticleDemo float m_turretBaseRotation; float m_turretCannonBaseRotation; float m_turretShootTimer; - Nz::Model m_spaceshipModel; - Nz::Model m_spacestationModel; + Nz::ModelRef m_spaceshipModel; + Nz::ModelRef m_spacestationModel; Nz::Music m_ambientMusic; Nz::ParticleDeclarationRef m_torpedoDeclaration; Nz::ParticleRendererRef m_laserBeamRenderer; diff --git a/include/Nazara/Audio/Music.hpp b/include/Nazara/Audio/Music.hpp index 27e742063..331624a8d 100644 --- a/include/Nazara/Audio/Music.hpp +++ b/include/Nazara/Audio/Music.hpp @@ -10,31 +10,15 @@ #include #include #include +#include #include -#include -#include -#include namespace Nz { - struct MusicParams : ResourceParameters - { - bool forceMono = false; - - bool IsValid() const; - }; - - class Music; - class SoundStream; - - using MusicLoader = ResourceLoader; - struct MusicImpl; class NAZARA_AUDIO_API Music : public Resource, public SoundEmitter { - friend MusicLoader; - public: Music() = default; Music(const Music&) = delete; @@ -55,9 +39,9 @@ namespace Nz bool IsLooping() const override; - bool OpenFromFile(const String& filePath, const MusicParams& params = MusicParams()); - bool OpenFromMemory(const void* data, std::size_t size, const MusicParams& params = MusicParams()); - bool OpenFromStream(Stream& stream, const MusicParams& params = MusicParams()); + bool OpenFromFile(const String& filePath, const SoundStreamParams& params = SoundStreamParams()); + bool OpenFromMemory(const void* data, std::size_t size, const SoundStreamParams& params = SoundStreamParams()); + bool OpenFromStream(Stream& stream, const SoundStreamParams& params = SoundStreamParams()); void Pause() override; void Play() override; @@ -75,8 +59,6 @@ namespace Nz bool FillAndQueueBuffer(unsigned int buffer); void MusicThread(); void StopThread(); - - static MusicLoader::LoaderList s_loaders; }; } diff --git a/include/Nazara/Audio/SoundBuffer.hpp b/include/Nazara/Audio/SoundBuffer.hpp index 46f37ab05..4cf5e50df 100644 --- a/include/Nazara/Audio/SoundBuffer.hpp +++ b/include/Nazara/Audio/SoundBuffer.hpp @@ -66,16 +66,17 @@ namespace Nz bool IsValid() const; - bool LoadFromFile(const String& filePath, const SoundBufferParams& params = SoundBufferParams()); - bool LoadFromMemory(const void* data, std::size_t size, const SoundBufferParams& params = SoundBufferParams()); - bool LoadFromStream(Stream& stream, const SoundBufferParams& params = SoundBufferParams()); - - static bool IsFormatSupported(AudioFormat format); - template static SoundBufferRef New(Args&&... args); - SoundBuffer& operator=(const SoundBuffer&) = delete; SoundBuffer& operator=(SoundBuffer&&) = delete; + static bool IsFormatSupported(AudioFormat format); + + static SoundBufferRef LoadFromFile(const String& filePath, const SoundBufferParams& params = SoundBufferParams()); + static SoundBufferRef LoadFromMemory(const void* data, std::size_t size, const SoundBufferParams& params = SoundBufferParams()); + static SoundBufferRef LoadFromStream(Stream& stream, const SoundBufferParams& params = SoundBufferParams()); + + template static SoundBufferRef New(Args&&... args); + // Signals: NazaraSignal(OnSoundBufferDestroy, const SoundBuffer* /*soundBuffer*/); NazaraSignal(OnSoundBufferRelease, const SoundBuffer* /*soundBuffer*/); diff --git a/include/Nazara/Audio/SoundStream.hpp b/include/Nazara/Audio/SoundStream.hpp index 9b9731b41..d33997d26 100644 --- a/include/Nazara/Audio/SoundStream.hpp +++ b/include/Nazara/Audio/SoundStream.hpp @@ -10,22 +10,50 @@ #include #include #include +#include +#include +#include +#include namespace Nz { - class NAZARA_AUDIO_API SoundStream + struct SoundStreamParams : public ResourceParameters { + bool forceMono = false; + + bool IsValid() const; + }; + + class Mutex; + class SoundStream; + + using SoundStreamLoader = ResourceLoader; + using SoundStreamRef = Nz::ObjectRef; + + class NAZARA_AUDIO_API SoundStream : public RefCounted, public Resource + { + friend SoundStreamLoader; + public: SoundStream() = default; virtual ~SoundStream(); virtual UInt32 GetDuration() const = 0; virtual AudioFormat GetFormat() const = 0; + virtual Mutex& GetMutex() = 0; virtual UInt64 GetSampleCount() const = 0; virtual UInt32 GetSampleRate() const = 0; virtual UInt64 Read(void* buffer, UInt64 sampleCount) = 0; virtual void Seek(UInt64 offset) = 0; + virtual UInt64 Tell() = 0; + + static SoundStreamRef OpenFromFile(const String& filePath, const SoundStreamParams& params = SoundStreamParams()); + static SoundStreamRef OpenFromMemory(const void* data, std::size_t size, const SoundStreamParams& params = SoundStreamParams()); + static SoundStreamRef OpenFromStream(Stream& stream, const SoundStreamParams& params = SoundStreamParams()); + + private: + static SoundStreamLoader::LoaderList s_loaders; }; } diff --git a/include/Nazara/Core/ObjectRef.hpp b/include/Nazara/Core/ObjectRef.hpp index c7959efc8..cb100c554 100644 --- a/include/Nazara/Core/ObjectRef.hpp +++ b/include/Nazara/Core/ObjectRef.hpp @@ -68,6 +68,10 @@ namespace Nz template bool operator>=(const T& lhs, const ObjectRef& rhs); template bool operator>=(const ObjectRef& lhs, const T& rhs); + template ObjectRef ConstRefCast(const ObjectRef& ref); + template ObjectRef DynamicRefCast(const ObjectRef& ref); + template ObjectRef ReinterpretRefCast(const ObjectRef& ref); + template ObjectRef StaticRefCast(const ObjectRef& ref); template struct PointedType> { using type = T; }; template struct PointedType const> { using type = T; }; diff --git a/include/Nazara/Core/ObjectRef.inl b/include/Nazara/Core/ObjectRef.inl index b4d89531c..f592fd501 100644 --- a/include/Nazara/Core/ObjectRef.inl +++ b/include/Nazara/Core/ObjectRef.inl @@ -480,6 +480,60 @@ namespace Nz { return !(lhs < rhs); } + + /*! + * \brief Casts an ObjectRef from one type to another using static_cast + * \return Reference to the casted object + * + * \param ref The reference to convert + * + * \remark It is an undefined behavior to cast between incompatible types + */ + template + ObjectRef ConstRefCast(const ObjectRef& ref) + { + return ObjectRef(const_cast(ref.Get())); + } + + /*! + * \brief Casts an ObjectRef from one type to another using static_cast + * \return Reference to the casted object + * + * \param ref The reference to convert + */ + template + ObjectRef DynamicRefCast(const ObjectRef& ref) + { + return ObjectRef(dynamic_cast(ref.Get())); + } + + /*! + * \brief Casts an ObjectRef from one type to another using static_cast + * \return Reference to the casted object + * + * \param ref The reference to convert + * + * \remark It is an undefined behavior to cast between incompatible types + */ + template + ObjectRef ReinterpretRefCast(const ObjectRef& ref) + { + return ObjectRef(static_cast(ref.Get())); + } + + /*! + * \brief Casts an ObjectRef from one type to another using static_cast + * \return Reference to the casted object + * + * \param ref The reference to convert + * + * \remark It is an undefined behavior to cast between incompatible types + */ + template + ObjectRef StaticRefCast(const ObjectRef& ref) + { + return ObjectRef(static_cast(ref.Get())); + } } namespace std @@ -504,3 +558,4 @@ namespace std } #include +#include "ObjectRef.hpp" diff --git a/include/Nazara/Core/ResourceLoader.hpp b/include/Nazara/Core/ResourceLoader.hpp index 3fce094e0..1bee093ee 100644 --- a/include/Nazara/Core/ResourceLoader.hpp +++ b/include/Nazara/Core/ResourceLoader.hpp @@ -8,6 +8,8 @@ #define NAZARA_RESOURCELOADER_HPP #include +#include +#include #include #include #include @@ -28,19 +30,19 @@ namespace Nz public: using ExtensionGetter = bool (*)(const String& extension); - using FileLoader = bool (*)(Type* resource, const String& filePath, const Parameters& parameters); - using MemoryLoader = bool (*)(Type* resource, const void* data, std::size_t size, const Parameters& parameters); + using FileLoader = ObjectRef (*)(const String& filePath, const Parameters& parameters); + using MemoryLoader = ObjectRef (*)(const void* data, std::size_t size, const Parameters& parameters); using StreamChecker = Ternary (*)(Stream& stream, const Parameters& parameters); - using StreamLoader = bool (*)(Type* resource, Stream& stream, const Parameters& parameters); + using StreamLoader = ObjectRef (*)(Stream& stream, const Parameters& parameters); ResourceLoader() = delete; ~ResourceLoader() = delete; static bool IsExtensionSupported(const String& extension); - static bool LoadFromFile(Type* resource, const String& filePath, const Parameters& parameters = Parameters()); - static bool LoadFromMemory(Type* resource, const void* data, std::size_t size, const Parameters& parameters = Parameters()); - static bool LoadFromStream(Type* resource, Stream& stream, const Parameters& parameters = Parameters()); + static ObjectRef LoadFromFile(const String& filePath, const Parameters& parameters = Parameters()); + static ObjectRef LoadFromMemory(const void* data, std::size_t size, const Parameters& parameters = Parameters()); + static ObjectRef LoadFromStream(Stream& stream, const Parameters& parameters = Parameters()); static void RegisterLoader(ExtensionGetter extensionGetter, StreamChecker checkFunc, StreamLoader streamLoader, FileLoader fileLoader = nullptr, MemoryLoader memoryLoader = nullptr); static void UnregisterLoader(ExtensionGetter extensionGetter, StreamChecker checkFunc, StreamLoader streamLoader, FileLoader fileLoader = nullptr, MemoryLoader memoryLoader = nullptr); diff --git a/include/Nazara/Core/ResourceLoader.inl b/include/Nazara/Core/ResourceLoader.inl index c60be5674..db143c3b0 100644 --- a/include/Nazara/Core/ResourceLoader.inl +++ b/include/Nazara/Core/ResourceLoader.inl @@ -53,9 +53,8 @@ namespace Nz * \remark Produces a NazaraError if all loaders failed or no loader was found */ template - bool ResourceLoader::LoadFromFile(Type* resource, const String& filePath, const Parameters& parameters) + ObjectRef ResourceLoader::LoadFromFile(const String& filePath, const Parameters& parameters) { - NazaraAssert(resource, "Invalid resource"); NazaraAssert(parameters.IsValid(), "Invalid parameters"); String path = File::NormalizePath(filePath); @@ -63,7 +62,7 @@ namespace Nz if (ext.IsEmpty()) { NazaraError("Failed to get file extension from \"" + filePath + '"'); - return false; + return nullptr; } File file(path); // Open only if needed @@ -84,7 +83,7 @@ namespace Nz if (!file.Open(OpenMode_ReadOnly)) { NazaraError("Failed to load file: unable to open \"" + filePath + '"'); - return false; + return nullptr; } } @@ -107,10 +106,11 @@ namespace Nz found = true; } - if (fileLoader(resource, filePath, parameters)) + ObjectRef resource = fileLoader(filePath, parameters); + if (resource) { resource->SetFilePath(filePath); - return true; + return resource; } } else @@ -125,10 +125,11 @@ namespace Nz file.SetCursorPos(0); - if (streamLoader(resource, file, parameters)) + ObjectRef resource = streamLoader(file, parameters); + if (resource) { resource->SetFilePath(filePath); - return true; + return resource; } } @@ -141,7 +142,7 @@ namespace Nz else NazaraError("Failed to load file: no loader found for extension \"" + ext + '"'); - return false; + return nullptr; } /*! @@ -160,9 +161,8 @@ namespace Nz * \remark Produces a NazaraError if all loaders failed or no loader was found */ template - bool ResourceLoader::LoadFromMemory(Type* resource, const void* data, std::size_t size, const Parameters& parameters) + ObjectRef ResourceLoader::LoadFromMemory(const void* data, std::size_t size, const Parameters& parameters) { - NazaraAssert(resource, "Invalid resource"); NazaraAssert(data, "Invalid data pointer"); NazaraAssert(size, "No data to load"); NazaraAssert(parameters.IsValid(), "Invalid parameters"); @@ -195,8 +195,9 @@ namespace Nz found = true; } - if (memoryLoader(resource, data, size, parameters)) - return true; + ObjectRef resource = memoryLoader(data, size, parameters); + if (resource) + return resource; } else { @@ -210,8 +211,9 @@ namespace Nz stream.SetCursorPos(0); - if (streamLoader(resource, stream, parameters)) - return true; + ObjectRef resource = streamLoader(stream, parameters); + if (resource) + return resource; } if (recognized == Ternary_True) @@ -223,7 +225,7 @@ namespace Nz else NazaraError("Failed to load file: no loader found"); - return false; + return nullptr; } /*! @@ -241,9 +243,8 @@ namespace Nz * \remark Produces a NazaraError if all loaders failed or no loader was found */ template - bool ResourceLoader::LoadFromStream(Type* resource, Stream& stream, const Parameters& parameters) + ObjectRef ResourceLoader::LoadFromStream(Stream& stream, const Parameters& parameters) { - NazaraAssert(resource, "Invalid resource"); NazaraAssert(stream.GetCursorPos() < stream.GetSize(), "No data to load"); NazaraAssert(parameters.IsValid(), "Invalid parameters"); @@ -267,8 +268,9 @@ namespace Nz stream.SetCursorPos(streamPos); // Load of the resource - if (streamLoader(resource, stream, parameters)) - return true; + ObjectRef resource = streamLoader(stream, parameters); + if (resource) + return resource; if (recognized == Ternary_True) NazaraWarning("Loader failed"); @@ -279,7 +281,7 @@ namespace Nz else NazaraError("Failed to load file: no loader found"); - return false; + return nullptr; } /*! diff --git a/include/Nazara/Core/ResourceManager.inl b/include/Nazara/Core/ResourceManager.inl index d590cc680..ca381fce7 100644 --- a/include/Nazara/Core/ResourceManager.inl +++ b/include/Nazara/Core/ResourceManager.inl @@ -37,14 +37,8 @@ namespace Nz auto it = Type::s_managerMap.find(absolutePath); if (it == Type::s_managerMap.end()) { - ObjectRef resource = Type::New(); + ObjectRef resource = Type::LoadFromFile(absolutePath, GetDefaultParameters()); if (!resource) - { - NazaraError("Failed to create resource"); - return ObjectRef(); - } - - if (!resource->LoadFromFile(absolutePath, GetDefaultParameters())) { NazaraError("Failed to load resource from file: " + absolutePath); return ObjectRef(); diff --git a/include/Nazara/Graphics/Material.hpp b/include/Nazara/Graphics/Material.hpp index 9903553a5..00cbbcbdb 100644 --- a/include/Nazara/Graphics/Material.hpp +++ b/include/Nazara/Graphics/Material.hpp @@ -137,10 +137,6 @@ namespace Nz inline bool IsShadowCastingEnabled() const; inline bool IsShadowReceiveEnabled() const; - inline bool LoadFromFile(const String& filePath, const MaterialParams& params = MaterialParams()); - inline bool LoadFromMemory(const void* data, std::size_t size, const MaterialParams& params = MaterialParams()); - inline bool LoadFromStream(Stream& stream, const MaterialParams& params = MaterialParams()); - void Reset(); void SaveToParameters(ParameterList* matData); @@ -180,6 +176,11 @@ namespace Nz inline static MaterialRef GetDefault(); inline static int GetTextureUnit(TextureMap textureMap); + + static inline MaterialRef LoadFromFile(const String& filePath, const MaterialParams& params = MaterialParams()); + static inline MaterialRef LoadFromMemory(const void* data, std::size_t size, const MaterialParams& params = MaterialParams()); + static inline MaterialRef LoadFromStream(Stream& stream, const MaterialParams& params = MaterialParams()); + template static MaterialRef New(Args&&... args); // Signals: diff --git a/include/Nazara/Graphics/Material.inl b/include/Nazara/Graphics/Material.inl index bf96d6bc5..32a59b1bb 100644 --- a/include/Nazara/Graphics/Material.inl +++ b/include/Nazara/Graphics/Material.inl @@ -895,43 +895,6 @@ namespace Nz return m_pipelineInfo.shadowReceive; } - /*! - * \brief Loads the material from file - * \return true if loading is successful - * - * \param filePath Path to the file - * \param params Parameters for the material - */ - inline bool Material::LoadFromFile(const String& filePath, const MaterialParams& params) - { - return MaterialLoader::LoadFromFile(this, filePath, params); - } - - /*! - * \brief Loads the material from memory - * \return true if loading is successful - * - * \param data Raw memory - * \param size Size of the memory - * \param params Parameters for the material - */ - inline bool Material::LoadFromMemory(const void* data, std::size_t size, const MaterialParams& params) - { - return MaterialLoader::LoadFromMemory(this, data, size, params); - } - - /*! - * \brief Loads the material from stream - * \return true if loading is successful - * - * \param stream Stream to the material - * \param params Parameters for the material - */ - inline bool Material::LoadFromStream(Stream& stream, const MaterialParams& params) - { - return MaterialLoader::LoadFromStream(this, stream, params); - } - /*! * \brief Sets the alpha map by name * \return true If successful @@ -1466,6 +1429,43 @@ namespace Nz return s_textureUnits[textureMap]; } + /*! + * \brief Loads the material from file + * \return true if loading is successful + * + * \param filePath Path to the file + * \param params Parameters for the material + */ + inline MaterialRef Material::LoadFromFile(const String& filePath, const MaterialParams& params) + { + return MaterialLoader::LoadFromFile(filePath, params); + } + + /*! + * \brief Loads the material from memory + * \return true if loading is successful + * + * \param data Raw memory + * \param size Size of the memory + * \param params Parameters for the material + */ + inline MaterialRef Material::LoadFromMemory(const void* data, std::size_t size, const MaterialParams& params) + { + return MaterialLoader::LoadFromMemory(data, size, params); + } + + /*! + * \brief Loads the material from stream + * \return true if loading is successful + * + * \param stream Stream to the material + * \param params Parameters for the material + */ + inline MaterialRef Material::LoadFromStream(Stream& stream, const MaterialParams& params) + { + return MaterialLoader::LoadFromStream(stream, params); + } + inline void Material::InvalidatePipeline() { m_pipelineUpdated = false; diff --git a/include/Nazara/Graphics/Model.hpp b/include/Nazara/Graphics/Model.hpp index dd2258e26..db73d4f98 100644 --- a/include/Nazara/Graphics/Model.hpp +++ b/include/Nazara/Graphics/Model.hpp @@ -65,10 +65,6 @@ namespace Nz virtual bool IsAnimated() const; - bool LoadFromFile(const String& filePath, const ModelParameters& params = ModelParameters()); - bool LoadFromMemory(const void* data, std::size_t size, const ModelParameters& params = ModelParameters()); - bool LoadFromStream(Stream& stream, const ModelParameters& params = ModelParameters()); - using InstancedRenderable::SetMaterial; bool SetMaterial(const String& subMeshName, MaterialRef material); bool SetMaterial(std::size_t skinIndex, const String& subMeshName, MaterialRef material); @@ -78,6 +74,10 @@ namespace Nz Model& operator=(const Model& node) = default; Model& operator=(Model&& node) = delete; + static ModelRef LoadFromFile(const String& filePath, const ModelParameters& params = ModelParameters()); + static ModelRef LoadFromMemory(const void* data, std::size_t size, const ModelParameters& params = ModelParameters()); + static ModelRef LoadFromStream(Stream& stream, const ModelParameters& params = ModelParameters()); + template static ModelRef New(Args&&... args); protected: diff --git a/include/Nazara/Graphics/Model.inl b/include/Nazara/Graphics/Model.inl index ee0ce7a41..9c1809368 100644 --- a/include/Nazara/Graphics/Model.inl +++ b/include/Nazara/Graphics/Model.inl @@ -59,7 +59,6 @@ namespace Nz * * \param args Arguments for the model */ - template ModelRef Model::New(Args&&... args) { diff --git a/include/Nazara/Graphics/SkeletalModel.hpp b/include/Nazara/Graphics/SkeletalModel.hpp index a36082619..b7ed266e2 100644 --- a/include/Nazara/Graphics/SkeletalModel.hpp +++ b/include/Nazara/Graphics/SkeletalModel.hpp @@ -26,12 +26,10 @@ namespace Nz class SkeletalModel; - using SkeletalModelLoader = ResourceLoader; + using SkeletalModelRef = ObjectRef; class NAZARA_GRAPHICS_API SkeletalModel : public Model, Updatable { - friend SkeletalModelLoader; - public: SkeletalModel(); SkeletalModel(const SkeletalModel& model) = default; @@ -55,10 +53,6 @@ namespace Nz bool IsAnimated() const override; bool IsAnimationEnabled() const; - bool LoadFromFile(const String& filePath, const SkeletalModelParameters& params = SkeletalModelParameters()); - bool LoadFromMemory(const void* data, std::size_t size, const SkeletalModelParameters& params = SkeletalModelParameters()); - bool LoadFromStream(Stream& stream, const SkeletalModelParameters& params = SkeletalModelParameters()); - bool SetAnimation(Animation* animation); void SetMesh(Mesh* mesh) override; bool SetSequence(const String& sequenceName); @@ -67,6 +61,8 @@ namespace Nz SkeletalModel& operator=(const SkeletalModel& node) = default; SkeletalModel& operator=(SkeletalModel&& node) = default; + template static SkeletalModelRef New(Args&&... args); + private: void MakeBoundingVolume() const override; /*void Register() override; @@ -80,9 +76,9 @@ namespace Nz float m_interpolation; unsigned int m_currentFrame; unsigned int m_nextFrame; - - static SkeletalModelLoader::LoaderList s_loaders; }; } +#include + #endif // NAZARA_SKELETALMODEL_HPP diff --git a/include/Nazara/Graphics/SkeletalModel.inl b/include/Nazara/Graphics/SkeletalModel.inl new file mode 100644 index 000000000..4bb2df2b6 --- /dev/null +++ b/include/Nazara/Graphics/SkeletalModel.inl @@ -0,0 +1,27 @@ +// Copyright (C) 2017 Jérôme Leclercq +// This file is part of the "Nazara Engine - Graphics module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include + +namespace Nz +{ + /*! + * \brief Creates a new SkeletalModel from the arguments + * \return A reference to the newly created SkeletalModel + * + * \param args Arguments for the skeletal model + */ + template + SkeletalModelRef SkeletalModel::New(Args&&... args) + { + std::unique_ptr object(new SkeletalModel(std::forward(args)...)); + object->SetPersistent(false); + + return object.release(); + } +} + +#include diff --git a/include/Nazara/Renderer/Texture.hpp b/include/Nazara/Renderer/Texture.hpp index ef90efcf6..6d33dcdd5 100644 --- a/include/Nazara/Renderer/Texture.hpp +++ b/include/Nazara/Renderer/Texture.hpp @@ -38,7 +38,7 @@ namespace Nz public: Texture() = default; Texture(ImageType type, PixelFormatType format, unsigned int width, unsigned int height, unsigned int depth = 1, UInt8 levelCount = 1); - explicit Texture(const Image& image); + explicit Texture(const Image* image); Texture(const Texture&) = delete; Texture(Texture&&) = delete; ~Texture(); @@ -68,24 +68,6 @@ namespace Nz void InvalidateMipmaps(); bool IsValid() const; - // Load - bool LoadFromFile(const String& filePath, const ImageParams& params = ImageParams(), bool generateMipmaps = true); - bool LoadFromImage(const Image& image, bool generateMipmaps = true); - bool LoadFromMemory(const void* data, std::size_t size, const ImageParams& params = ImageParams(), bool generateMipmaps = true); - bool LoadFromStream(Stream& stream, const ImageParams& params = ImageParams(), bool generateMipmaps = true); - - // LoadArray - bool LoadArrayFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); - bool LoadArrayFromImage(const Image& image, bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); - bool LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); - bool LoadArrayFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); - - // LoadCubemap - bool LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); - bool LoadCubemapFromImage(const Image& image, bool generateMipmaps = true, const CubemapParams& params = CubemapParams()); - bool LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); - bool LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); - // LoadFace bool LoadFaceFromFile(CubemapFace face, const String& filePath, const ImageParams& params = ImageParams()); bool LoadFaceFromMemory(CubemapFace face, const void* data, std::size_t size, const ImageParams& params = ImageParams()); @@ -97,9 +79,9 @@ namespace Nz bool SetMipmapRange(UInt8 minLevel, UInt8 maxLevel); - bool Update(const Image& image, UInt8 level = 0); - bool Update(const Image& image, const Boxui& box, UInt8 level = 0); - bool Update(const Image& image, const Rectui& rect, unsigned int z = 0, UInt8 level = 0); + bool Update(const Image* image, UInt8 level = 0); + bool Update(const Image* image, const Boxui& box, UInt8 level = 0); + bool Update(const Image* image, const Rectui& rect, unsigned int z = 0, UInt8 level = 0); bool Update(const UInt8* pixels, unsigned int srcWidth = 0, unsigned int srcHeight = 0, UInt8 level = 0) override; bool Update(const UInt8* pixels, const Boxui& box, unsigned int srcWidth = 0, unsigned int srcHeight = 0, UInt8 level = 0) override; bool Update(const UInt8* pixels, const Rectui& rect, unsigned int z = 0, unsigned int srcWidth = 0, unsigned int srcHeight = 0, UInt8 level = 0) override; @@ -113,6 +95,25 @@ namespace Nz static bool IsFormatSupported(PixelFormatType format); static bool IsMipmappingSupported(); static bool IsTypeSupported(ImageType type); + + // Load + static TextureRef LoadFromFile(const String& filePath, const ImageParams& params = ImageParams(), bool generateMipmaps = true); + static TextureRef LoadFromImage(const Image* image, bool generateMipmaps = true); + static TextureRef LoadFromMemory(const void* data, std::size_t size, const ImageParams& params = ImageParams(), bool generateMipmaps = true); + static TextureRef LoadFromStream(Stream& stream, const ImageParams& params = ImageParams(), bool generateMipmaps = true); + + // LoadArray + static TextureRef LoadArrayFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); + static TextureRef LoadArrayFromImage(const Image* image, bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); + static TextureRef LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); + static TextureRef LoadArrayFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const Vector2ui& atlasSize = Vector2ui(2, 2)); + + // LoadCubemap + static TextureRef LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); + static TextureRef LoadCubemapFromImage(const Image* image, bool generateMipmaps = true, const CubemapParams& params = CubemapParams()); + static TextureRef LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); + static TextureRef LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), bool generateMipmaps = true, const CubemapParams& cubemapParams = CubemapParams()); + template static TextureRef New(Args&&... args); // Signals: diff --git a/include/Nazara/Utility/Animation.hpp b/include/Nazara/Utility/Animation.hpp index f714aa5a6..85f3f3bc8 100644 --- a/include/Nazara/Utility/Animation.hpp +++ b/include/Nazara/Utility/Animation.hpp @@ -83,15 +83,15 @@ namespace Nz bool IsLoopPointInterpolationEnabled() const; bool IsValid() const; - bool LoadFromFile(const String& filePath, const AnimationParams& params = AnimationParams()); - bool LoadFromMemory(const void* data, std::size_t size, const AnimationParams& params = AnimationParams()); - bool LoadFromStream(Stream& stream, const AnimationParams& params = AnimationParams()); - void RemoveSequence(const String& sequenceName); void RemoveSequence(UInt32 index); template static AnimationRef New(Args&&... args); + static AnimationRef LoadFromFile(const String& filePath, const AnimationParams& params = AnimationParams()); + static AnimationRef LoadFromMemory(const void* data, std::size_t size, const AnimationParams& params = AnimationParams()); + static AnimationRef LoadFromStream(Stream& stream, const AnimationParams& params = AnimationParams()); + // Signals: NazaraSignal(OnAnimationDestroy, const Animation* /*animation*/); NazaraSignal(OnAnimationRelease, const Animation* /*animation*/); diff --git a/include/Nazara/Utility/Font.hpp b/include/Nazara/Utility/Font.hpp index 7f1a411cd..be67c92e7 100644 --- a/include/Nazara/Utility/Font.hpp +++ b/include/Nazara/Utility/Font.hpp @@ -76,11 +76,6 @@ namespace Nz bool Precache(unsigned int characterSize, UInt32 style, char32_t character) const; bool Precache(unsigned int characterSize, UInt32 style, const String& characterSet) const; - // Open - bool OpenFromFile(const String& filePath, const FontParams& params = FontParams()); - bool OpenFromMemory(const void* data, std::size_t size, const FontParams& params = FontParams()); - bool OpenFromStream(Stream& stream, const FontParams& params = FontParams()); - void SetAtlas(const std::shared_ptr& atlas); void SetGlyphBorder(unsigned int borderSize); void SetMinimumStepSize(unsigned int minimumStepSize); @@ -93,6 +88,10 @@ namespace Nz static unsigned int GetDefaultGlyphBorder(); static unsigned int GetDefaultMinimumStepSize(); + static FontRef OpenFromFile(const String& filePath, const FontParams& params = FontParams()); + static FontRef OpenFromMemory(const void* data, std::size_t size, const FontParams& params = FontParams()); + static FontRef OpenFromStream(Stream& stream, const FontParams& params = FontParams()); + template static FontRef New(Args&&... args); static void SetDefaultAtlas(const std::shared_ptr& atlas); diff --git a/include/Nazara/Utility/Image.hpp b/include/Nazara/Utility/Image.hpp index ccefd2fee..3c3427b88 100644 --- a/include/Nazara/Utility/Image.hpp +++ b/include/Nazara/Utility/Image.hpp @@ -63,7 +63,7 @@ namespace Nz bool Convert(PixelFormatType format); - void Copy(const Image& source, const Boxui& srcBox, const Vector3ui& dstPos); + void Copy(const Image* source, const Boxui& srcBox, const Vector3ui& dstPos); bool Create(ImageType type, PixelFormatType format, unsigned int width, unsigned int height, unsigned int depth = 1, UInt8 levelCount = 1); void Destroy(); @@ -93,23 +93,6 @@ namespace Nz bool IsValid() const; - // Load - bool LoadFromFile(const String& filePath, const ImageParams& params = ImageParams()); - bool LoadFromMemory(const void* data, std::size_t size, const ImageParams& params = ImageParams()); - bool LoadFromStream(Stream& stream, const ImageParams& params = ImageParams()); - - // LoadArray - bool LoadArrayFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), const Vector2ui& atlasSize = Vector2ui(2, 2)); - bool LoadArrayFromImage(const Image& image, const Vector2ui& atlasSize = Vector2ui(2, 2)); - bool LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), const Vector2ui& atlasSize = Vector2ui(2, 2)); - bool LoadArrayFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), const Vector2ui& atlasSize = Vector2ui(2, 2)); - - // LoadCubemap - bool LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), const CubemapParams& cubemapParams = CubemapParams()); - bool LoadCubemapFromImage(const Image& image, const CubemapParams& params = CubemapParams()); - bool LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), const CubemapParams& cubemapParams = CubemapParams()); - bool LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), const CubemapParams& cubemapParams = CubemapParams()); - // LoadFace bool LoadFaceFromFile(CubemapFace face, const String& filePath, const ImageParams& params = ImageParams()); bool LoadFaceFromMemory(CubemapFace face, const void* data, std::size_t size, const ImageParams& params = ImageParams()); @@ -133,6 +116,24 @@ namespace Nz static void Copy(UInt8* destination, const UInt8* source, PixelFormatType format, unsigned int width, unsigned int height, unsigned int depth = 1, unsigned int dstWidth = 0, unsigned int dstHeight = 0, unsigned int srcWidth = 0, unsigned int srcHeight = 0); static UInt8 GetMaxLevel(unsigned int width, unsigned int height, unsigned int depth = 1); static UInt8 GetMaxLevel(ImageType type, unsigned int width, unsigned int height, unsigned int depth = 1); + + // Load + static ImageRef LoadFromFile(const String& filePath, const ImageParams& params = ImageParams()); + static ImageRef LoadFromMemory(const void* data, std::size_t size, const ImageParams& params = ImageParams()); + static ImageRef LoadFromStream(Stream& stream, const ImageParams& params = ImageParams()); + + // LoadArray + static ImageRef LoadArrayFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), const Vector2ui& atlasSize = Vector2ui(2, 2)); + static ImageRef LoadArrayFromImage(const Image* image, const Vector2ui& atlasSize = Vector2ui(2, 2)); + static ImageRef LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), const Vector2ui& atlasSize = Vector2ui(2, 2)); + static ImageRef LoadArrayFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), const Vector2ui& atlasSize = Vector2ui(2, 2)); + + // LoadCubemap + static ImageRef LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams = ImageParams(), const CubemapParams& cubemapParams = CubemapParams()); + static ImageRef LoadCubemapFromImage(const Image* image, const CubemapParams& params = CubemapParams()); + static ImageRef LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams = ImageParams(), const CubemapParams& cubemapParams = CubemapParams()); + static ImageRef LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams = ImageParams(), const CubemapParams& cubemapParams = CubemapParams()); + template static ImageRef New(Args&&... args); struct SharedImage diff --git a/include/Nazara/Utility/Mesh.hpp b/include/Nazara/Utility/Mesh.hpp index 0ecd9eb3a..3c1169bfc 100644 --- a/include/Nazara/Utility/Mesh.hpp +++ b/include/Nazara/Utility/Mesh.hpp @@ -128,10 +128,6 @@ namespace Nz bool IsAnimable() const; bool IsValid() const; - bool LoadFromFile(const String& filePath, const MeshParams& params = MeshParams()); - bool LoadFromMemory(const void* data, std::size_t size, const MeshParams& params = MeshParams()); - bool LoadFromStream(Stream& stream, const MeshParams& params = MeshParams()); - void Recenter(); void RemoveSubMesh(const String& identifier); @@ -149,6 +145,10 @@ namespace Nz Mesh& operator=(const Mesh&) = delete; Mesh& operator=(Mesh&&) = delete; + static MeshRef LoadFromFile(const String& filePath, const MeshParams& params = MeshParams()); + static MeshRef LoadFromMemory(const void* data, std::size_t size, const MeshParams& params = MeshParams()); + static MeshRef LoadFromStream(Stream& stream, const MeshParams& params = MeshParams()); + template static MeshRef New(Args&&... args); // Signals: diff --git a/plugins/Assimp/Plugin.cpp b/plugins/Assimp/Plugin.cpp index 4320ae098..b91337f9a 100644 --- a/plugins/Assimp/Plugin.cpp +++ b/plugins/Assimp/Plugin.cpp @@ -59,6 +59,8 @@ void ProcessJoints(aiNode* node, Skeleton* skeleton, const std::set& node->mTransformation.c1, node->mTransformation.c2, node->mTransformation.c3, node->mTransformation.c4, node->mTransformation.d1, node->mTransformation.d2, node->mTransformation.d3, node->mTransformation.d4); + transformMatrix.Transpose(); + transformMatrix.InverseAffine(); joint->SetInverseBindMatrix(transformMatrix); @@ -84,7 +86,7 @@ Ternary Check(Stream& /*stream*/, const MeshParams& parameters) return Ternary_Unknown; } -bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) +MeshRef Load(Stream& stream, const MeshParams& parameters) { Nz::String streamPath = stream.GetPath(); @@ -147,7 +149,7 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) if (!scene) { NazaraError("Assimp failed to import file: " + Nz::String(aiGetErrorString())); - return false; + return nullptr; } std::set joints; @@ -167,6 +169,7 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) } } + MeshRef mesh = Mesh::New(); if (animatedMesh) { mesh->CreateSkeletal(UInt32(joints.size())); @@ -180,7 +183,7 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) ProcessJoints(scene->mRootNode, skeleton, joints); - return false; + return nullptr; } else { @@ -375,7 +378,7 @@ bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) aiReleaseImport(scene); - return true; + return mesh; } extern "C" diff --git a/src/Nazara/Audio/Formats/sndfileLoader.cpp b/src/Nazara/Audio/Formats/sndfileLoader.cpp index 25c30e4ad..75bb3e62f 100644 --- a/src/Nazara/Audio/Formats/sndfileLoader.cpp +++ b/src/Nazara/Audio/Formats/sndfileLoader.cpp @@ -14,7 +14,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -97,6 +99,11 @@ namespace Nz return m_format; } + Mutex& GetMutex() override + { + return m_mutex; + } + UInt64 GetSampleCount() const override { return m_sampleCount; @@ -124,7 +131,7 @@ namespace Nz bool Open(const void* data, std::size_t size, bool forceMono) { - m_ownedStream.reset(new MemoryView(data, size)); + m_ownedStream = std::make_unique(data, size); return Open(*m_ownedStream, forceMono); } @@ -201,12 +208,18 @@ namespace Nz sf_seek(m_handle, offset*m_sampleRate / 1000, SEEK_SET); } + UInt64 Tell() override + { + return sf_seek(m_handle, 0, SEEK_CUR) * 1000 / m_sampleRate; + } + private: std::vector m_mixBuffer; std::unique_ptr m_ownedStream; AudioFormat m_format; SNDFILE* m_handle; bool m_mixToMono; + Mutex m_mutex; UInt32 m_duration; UInt32 m_sampleRate; UInt64 m_sampleCount; @@ -222,7 +235,7 @@ namespace Nz return supportedExtensions.find(extension) != supportedExtensions.end(); } - Ternary CheckMusic(Stream& stream, const MusicParams& parameters) + Ternary CheckSoundStream(Stream& stream, const SoundStreamParams& parameters) { NazaraUnused(parameters); @@ -240,67 +253,43 @@ namespace Nz return Ternary_False; } - bool LoadMusicFile(Music* music, const String& filePath, const MusicParams& parameters) + SoundStreamRef LoadSoundStreamFile(const String& filePath, const SoundStreamParams& parameters) { - std::unique_ptr musicStream(new sndfileStream); - if (!musicStream->Open(filePath, parameters.forceMono)) + std::unique_ptr soundStream(new sndfileStream); + if (!soundStream->Open(filePath, parameters.forceMono)) { - NazaraError("Failed to open music stream"); - return false; + NazaraError("Failed to open sound stream"); + return nullptr; } - if (!music->Create(musicStream.get())) // Transfert de propriété - { - NazaraError("Failed to create music"); - return false; - } - - // Le pointeur a été transféré avec succès, nous pouvons laisser tomber la propriété - musicStream.release(); - - return true; + soundStream->SetPersistent(false); + return soundStream.release(); } - bool LoadMusicMemory(Music* music, const void* data, std::size_t size, const MusicParams& parameters) + SoundStreamRef LoadSoundStreamMemory(const void* data, std::size_t size, const SoundStreamParams& parameters) { - std::unique_ptr musicStream(new sndfileStream); - if (!musicStream->Open(data, size, parameters.forceMono)) + std::unique_ptr soundStream(new sndfileStream); + if (!soundStream->Open(data, size, parameters.forceMono)) { NazaraError("Failed to open music stream"); - return false; + return nullptr; } - if (!music->Create(musicStream.get())) // Transfert de propriété - { - NazaraError("Failed to create music"); - return false; - } - - // Le pointeur a été transféré avec succès, nous pouvons laisser tomber la propriété - musicStream.release(); - - return true; + soundStream->SetPersistent(false); + return soundStream.release(); } - bool LoadMusicStream(Music* music, Stream& stream, const MusicParams& parameters) + SoundStreamRef LoadSoundStreamStream(Stream& stream, const SoundStreamParams& parameters) { - std::unique_ptr musicStream(new sndfileStream); - if (!musicStream->Open(stream, parameters.forceMono)) + std::unique_ptr soundStream(new sndfileStream); + if (!soundStream->Open(stream, parameters.forceMono)) { NazaraError("Failed to open music stream"); - return false; + return nullptr; } - if (!music->Create(musicStream.get())) // Transfert de propriété - { - NazaraError("Failed to create music"); - return false; - } - - // Le pointeur a été transféré avec succès, nous pouvons laisser tomber la propriété - musicStream.release(); - - return true; + soundStream->SetPersistent(false); + return soundStream.release(); } Ternary CheckSoundBuffer(Stream& stream, const SoundBufferParams& parameters) @@ -320,7 +309,7 @@ namespace Nz return Ternary_False; } - bool LoadSoundBuffer(SoundBuffer* soundBuffer, Stream& stream, const SoundBufferParams& parameters) + SoundBufferRef LoadSoundBuffer(Stream& stream, const SoundBufferParams& parameters) { SF_INFO info; info.format = 0; @@ -329,7 +318,7 @@ namespace Nz if (!file) { NazaraError("Failed to load sound file: " + String(sf_strerror(file))); - return false; + return nullptr; } // Lynix utilise RAII... @@ -344,7 +333,7 @@ namespace Nz if (format == AudioFormat_Unknown) { NazaraError("Channel count not handled"); - return false; + return nullptr; } // https://github.com/LaurentGomila/SFML/issues/271 @@ -359,7 +348,7 @@ namespace Nz if (sf_read_short(file, samples.get(), sampleCount) != sampleCount) { NazaraError("Failed to read samples"); - return false; + return nullptr; } // Une conversion en mono est-elle nécessaire ? @@ -372,13 +361,7 @@ namespace Nz sampleCount = static_cast(info.frames); } - if (!soundBuffer->Create(format, sampleCount, info.samplerate, samples.get())) - { - NazaraError("Failed to create sound buffer"); - return false; - } - - return true; + return SoundBuffer::New(format, sampleCount, info.samplerate, samples.get()); } } @@ -386,14 +369,14 @@ namespace Nz { void Register_sndfile() { - MusicLoader::RegisterLoader(Detail::IsSupported, Detail::CheckMusic, Detail::LoadMusicStream, Detail::LoadMusicFile, Detail::LoadMusicMemory); SoundBufferLoader::RegisterLoader(Detail::IsSupported, Detail::CheckSoundBuffer, Detail::LoadSoundBuffer); + SoundStreamLoader::RegisterLoader(Detail::IsSupported, Detail::CheckSoundStream, Detail::LoadSoundStreamStream, Detail::LoadSoundStreamFile, Detail::LoadSoundStreamMemory); } void Unregister_sndfile() { - MusicLoader::UnregisterLoader(Detail::IsSupported, Detail::CheckMusic, Detail::LoadMusicStream, Detail::LoadMusicFile, Detail::LoadMusicMemory); SoundBufferLoader::UnregisterLoader(Detail::IsSupported, Detail::CheckSoundBuffer, Detail::LoadSoundBuffer); + SoundStreamLoader::UnregisterLoader(Detail::IsSupported, Detail::CheckSoundStream, Detail::LoadSoundStreamStream, Detail::LoadSoundStreamFile, Detail::LoadSoundStreamMemory); } } } diff --git a/src/Nazara/Audio/Music.cpp b/src/Nazara/Audio/Music.cpp index 221cb9d50..356b1b51a 100644 --- a/src/Nazara/Audio/Music.cpp +++ b/src/Nazara/Audio/Music.cpp @@ -5,9 +5,12 @@ #include #include #include +#include #include #include +#include #include +#include #include #include @@ -21,24 +24,15 @@ namespace Nz * \remark Module Audio needs to be initialized to use this class */ - /*! - * \brief Checks whether the parameters for the loading of the music are correct - * \return true If parameters are valid - */ - - bool MusicParams::IsValid() const - { - return true; - } - struct MusicImpl { ALenum audioFormat; - std::unique_ptr stream; + std::atomic processedSamples; std::vector chunkSamples; Mutex bufferLock; + SoundStreamRef stream; Thread thread; - UInt64 processedSamples; + UInt64 playingOffset; bool loop = false; bool streaming = false; unsigned int sampleRate; @@ -74,7 +68,7 @@ namespace Nz m_impl->sampleRate = soundStream->GetSampleRate(); m_impl->audioFormat = OpenAL::AudioFormat[format]; m_impl->chunkSamples.resize(format * m_impl->sampleRate); // One second of samples - m_impl->stream.reset(soundStream); + m_impl->stream = soundStream; SetPlayingOffset(0); @@ -221,9 +215,12 @@ namespace Nz * \param filePath Path to the file * \param params Parameters for the music */ - bool Music::OpenFromFile(const String& filePath, const MusicParams& params) + bool Music::OpenFromFile(const String& filePath, const SoundStreamParams& params) { - return MusicLoader::LoadFromFile(this, filePath, params); + if (SoundStreamRef soundStream = SoundStream::OpenFromFile(filePath, params)) + return Create(soundStream); + else + return false; } /*! @@ -236,9 +233,12 @@ namespace Nz * * \remark The memory pointer must stay valid (accessible) as long as the music is playing */ - bool Music::OpenFromMemory(const void* data, std::size_t size, const MusicParams& params) + bool Music::OpenFromMemory(const void* data, std::size_t size, const SoundStreamParams& params) { - return MusicLoader::LoadFromMemory(this, data, size, params); + if (SoundStreamRef soundStream = SoundStream::OpenFromMemory(data, size, params)) + return Create(soundStream); + else + return false; } /*! @@ -250,9 +250,12 @@ namespace Nz * * \remark The stream must stay valid as long as the music is playing */ - bool Music::OpenFromStream(Stream& stream, const MusicParams& params) + bool Music::OpenFromStream(Stream& stream, const SoundStreamParams& params) { - return MusicLoader::LoadFromStream(this, stream, params); + if (SoundStreamRef soundStream = SoundStream::OpenFromStream(stream, params)) + return Create(soundStream); + else + return false; } /*! @@ -324,7 +327,7 @@ namespace Nz if (isPlaying) Stop(); - m_impl->stream->Seek(offset); + m_impl->playingOffset = offset; m_impl->processedSamples = UInt64(offset) * m_impl->sampleRate * m_impl->stream->GetFormat() / 1000ULL; if (isPlaying) @@ -349,6 +352,10 @@ namespace Nz std::size_t sampleCount = m_impl->chunkSamples.size(); std::size_t sampleRead = 0; + Nz::LockGuard lock(m_impl->stream->GetMutex()); + + m_impl->stream->Seek(m_impl->playingOffset); + // Fill the buffer by reading from the stream for (;;) { @@ -364,6 +371,10 @@ namespace Nz break; } + m_impl->playingOffset = m_impl->stream->Tell(); + + lock.Unlock(); + // Update the buffer (send it to OpenAL) and queue it if we got any data if (sampleRead > 0) { @@ -380,9 +391,9 @@ namespace Nz ALuint buffers[NAZARA_AUDIO_STREAMED_BUFFER_COUNT]; alGenBuffers(NAZARA_AUDIO_STREAMED_BUFFER_COUNT, buffers); - for (unsigned int i = 0; i < NAZARA_AUDIO_STREAMED_BUFFER_COUNT; ++i) + for (unsigned int buffer : buffers) { - if (FillAndQueueBuffer(buffers[i])) + if (FillAndQueueBuffer(buffer)) break; // We have reached the end of the stream, there is no use to add new buffers } @@ -448,6 +459,4 @@ namespace Nz m_impl->thread.Join(); } } - - MusicLoader::LoaderList Music::s_loaders; } diff --git a/src/Nazara/Audio/Sound.cpp b/src/Nazara/Audio/Sound.cpp index 6937e1ec2..d4a9e8e06 100644 --- a/src/Nazara/Audio/Sound.cpp +++ b/src/Nazara/Audio/Sound.cpp @@ -151,8 +151,8 @@ namespace Nz */ bool Sound::LoadFromFile(const String& filePath, const SoundBufferParams& params) { - SoundBufferRef buffer = SoundBuffer::New(); - if (!buffer->LoadFromFile(filePath, params)) + SoundBufferRef buffer = SoundBuffer::LoadFromFile(filePath, params); + if (!buffer) { NazaraError("Failed to load buffer from file (" + filePath + ')'); return false; @@ -174,8 +174,8 @@ namespace Nz */ bool Sound::LoadFromMemory(const void* data, std::size_t size, const SoundBufferParams& params) { - SoundBufferRef buffer = SoundBuffer::New(); - if (!buffer->LoadFromMemory(data, size, params)) + SoundBufferRef buffer = SoundBuffer::LoadFromMemory(data, size, params); + if (!buffer) { NazaraError("Failed to load buffer from memory (" + String::Pointer(data) + ')'); return false; @@ -196,8 +196,8 @@ namespace Nz */ bool Sound::LoadFromStream(Stream& stream, const SoundBufferParams& params) { - SoundBufferRef buffer = SoundBuffer::New(); - if (!buffer->LoadFromStream(stream, params)) + SoundBufferRef buffer = SoundBuffer::LoadFromStream(stream, params); + if (!buffer) { NazaraError("Failed to load buffer from stream"); return false; diff --git a/src/Nazara/Audio/SoundBuffer.cpp b/src/Nazara/Audio/SoundBuffer.cpp index 2888710f1..e1570b36e 100644 --- a/src/Nazara/Audio/SoundBuffer.cpp +++ b/src/Nazara/Audio/SoundBuffer.cpp @@ -152,7 +152,7 @@ namespace Nz m_impl->format = format; m_impl->sampleCount = sampleCount; m_impl->sampleRate = sampleRate; - m_impl->samples.reset(new Int16[sampleCount]); + m_impl->samples = std::make_unique(sampleCount); std::memcpy(&m_impl->samples[0], samples, sampleCount*sizeof(Int16)); clearBufferOnExit.Reset(); @@ -251,6 +251,17 @@ namespace Nz return m_impl != nullptr; } + /*! + * \brief Checks whether the format is supported by the engine + * \return true if it is the case + * + * \param format Format to check + */ + bool SoundBuffer::IsFormatSupported(AudioFormat format) + { + return Audio::IsFormatSupported(format); + } + /*! * \brief Loads the sound buffer from file * \return true if loading is successful @@ -258,9 +269,9 @@ namespace Nz * \param filePath Path to the file * \param params Parameters for the sound buffer */ - bool SoundBuffer::LoadFromFile(const String& filePath, const SoundBufferParams& params) + SoundBufferRef SoundBuffer::LoadFromFile(const String& filePath, const SoundBufferParams& params) { - return SoundBufferLoader::LoadFromFile(this, filePath, params); + return SoundBufferLoader::LoadFromFile(filePath, params); } /*! @@ -271,9 +282,9 @@ namespace Nz * \param size Size of the memory * \param params Parameters for the sound buffer */ - bool SoundBuffer::LoadFromMemory(const void* data, std::size_t size, const SoundBufferParams& params) + SoundBufferRef SoundBuffer::LoadFromMemory(const void* data, std::size_t size, const SoundBufferParams& params) { - return SoundBufferLoader::LoadFromMemory(this, data, size, params); + return SoundBufferLoader::LoadFromMemory(data, size, params); } /*! @@ -283,20 +294,9 @@ namespace Nz * \param stream Stream to the sound buffer * \param params Parameters for the sound buffer */ - bool SoundBuffer::LoadFromStream(Stream& stream, const SoundBufferParams& params) + SoundBufferRef SoundBuffer::LoadFromStream(Stream& stream, const SoundBufferParams& params) { - return SoundBufferLoader::LoadFromStream(this, stream, params); - } - - /*! - * \brief Checks whether the format is supported by the engine - * \return true if it is the case - * - * \param format Format to check - */ - bool SoundBuffer::IsFormatSupported(AudioFormat format) - { - return Audio::IsFormatSupported(format); + return SoundBufferLoader::LoadFromStream(stream, params); } /*! diff --git a/src/Nazara/Audio/SoundStream.cpp b/src/Nazara/Audio/SoundStream.cpp index eec87ccc1..0051b5596 100644 --- a/src/Nazara/Audio/SoundStream.cpp +++ b/src/Nazara/Audio/SoundStream.cpp @@ -6,6 +6,11 @@ namespace Nz { + bool SoundStreamParams::IsValid() const + { + return true; + } + /*! * \ingroup audio * \class Nz::SoundStream @@ -15,4 +20,21 @@ namespace Nz */ SoundStream::~SoundStream() = default; + + SoundStreamRef SoundStream::OpenFromFile(const String& filePath, const SoundStreamParams& params) + { + return SoundStreamLoader::LoadFromFile(filePath, params); + } + + SoundStreamRef SoundStream::OpenFromMemory(const void* data, std::size_t size, const SoundStreamParams& params) + { + return SoundStreamLoader::LoadFromMemory(data, size, params); + } + + SoundStreamRef SoundStream::OpenFromStream(Stream& stream, const SoundStreamParams& params) + { + return SoundStreamLoader::LoadFromStream(stream, params); + } + + SoundStreamLoader::LoaderList SoundStream::s_loaders; } diff --git a/src/Nazara/Graphics/Formats/MeshLoader.cpp b/src/Nazara/Graphics/Formats/MeshLoader.cpp index 439039cad..d21ed58c1 100644 --- a/src/Nazara/Graphics/Formats/MeshLoader.cpp +++ b/src/Nazara/Graphics/Formats/MeshLoader.cpp @@ -31,8 +31,7 @@ namespace Nz filePath += ".tga"; } - MaterialRef material = Material::New(); - if (material->LoadFromFile(filePath, parameters.material)) + if (MaterialRef material = Material::LoadFromFile(filePath, parameters.material)) model->SetMaterial(i, std::move(material)); else NazaraWarning("Failed to load material from file " + String::Number(i)); @@ -47,7 +46,7 @@ namespace Nz } } - Ternary CheckStatic(Stream& stream, const ModelParameters& parameters) + Ternary Check(Stream& stream, const ModelParameters& parameters) { NazaraUnused(stream); @@ -58,65 +57,29 @@ namespace Nz return Ternary_Unknown; } - bool LoadStatic(Model* model, Stream& stream, const ModelParameters& parameters) + ModelRef Load(Stream& stream, const ModelParameters& parameters) { NazaraUnused(parameters); - MeshRef mesh = Mesh::New(); - if (!mesh->LoadFromStream(stream, parameters.mesh)) + MeshRef mesh = Mesh::LoadFromStream(stream, parameters.mesh); + if (!mesh) { NazaraError("Failed to load model mesh"); - return false; + return nullptr; } + ModelRef model; if (mesh->IsAnimable()) - { - NazaraError("Can't load animated mesh into static model"); - return false; - } + model = SkeletalModel::New(); + else + model = Model::New(); model->SetMesh(mesh); if (parameters.loadMaterials) LoadMaterials(model, parameters); - return true; - } - - Ternary CheckAnimated(Stream& stream, const SkeletalModelParameters& parameters) - { - NazaraUnused(stream); - - bool skip; - if (parameters.custom.GetBooleanParameter("SkipNativeAnimatedMeshLoader", &skip) && skip) - return Ternary_False; - - return Ternary_Unknown; - } - - bool LoadAnimated(SkeletalModel* model, Stream& stream, const SkeletalModelParameters& parameters) - { - NazaraUnused(parameters); - - MeshRef mesh = Mesh::New(); - if (!mesh->LoadFromStream(stream, parameters.mesh)) - { - NazaraError("Failed to load model mesh"); - return false; - } - - if (!mesh->IsAnimable()) - { - NazaraError("Can't load static mesh into animated model"); - return false; - } - - model->SetMesh(mesh); - - if (parameters.loadMaterials) - LoadMaterials(model, parameters); - - return true; + return model; } } @@ -124,14 +87,12 @@ namespace Nz { void RegisterMesh() { - ModelLoader::RegisterLoader(MeshLoader::IsExtensionSupported, CheckStatic, LoadStatic); - SkeletalModelLoader::RegisterLoader(MeshLoader::IsExtensionSupported, CheckAnimated, LoadAnimated); + ModelLoader::RegisterLoader(MeshLoader::IsExtensionSupported, Check, Load); } void UnregisterMesh() { - ModelLoader::UnregisterLoader(MeshLoader::IsExtensionSupported, CheckStatic, LoadStatic); - SkeletalModelLoader::UnregisterLoader(MeshLoader::IsExtensionSupported, CheckAnimated, LoadAnimated); + ModelLoader::UnregisterLoader(MeshLoader::IsExtensionSupported, Check, Load); } } } diff --git a/src/Nazara/Graphics/Formats/TextureLoader.cpp b/src/Nazara/Graphics/Formats/TextureLoader.cpp index 02f51d5ad..cda56c187 100644 --- a/src/Nazara/Graphics/Formats/TextureLoader.cpp +++ b/src/Nazara/Graphics/Formats/TextureLoader.cpp @@ -22,22 +22,22 @@ namespace Nz return Ternary_Unknown; } - bool Load(Material* material, Stream& stream, const MaterialParams& parameters) + MaterialRef Load(Stream& stream, const MaterialParams& parameters) { NazaraUnused(parameters); - TextureRef texture = Texture::New(); - if (!texture->LoadFromStream(stream)) + TextureRef texture = Texture::LoadFromStream(stream); + if (!texture) { NazaraError("Failed to load diffuse map"); - return false; + return nullptr; } - material->Reset(); + MaterialRef material = Material::New(); material->SetDiffuseMap(texture); material->SetShader(parameters.shaderName); - return true; + return material; } } diff --git a/src/Nazara/Graphics/GuillotineTextureAtlas.cpp b/src/Nazara/Graphics/GuillotineTextureAtlas.cpp index 16ae46be4..9c59baa7b 100644 --- a/src/Nazara/Graphics/GuillotineTextureAtlas.cpp +++ b/src/Nazara/Graphics/GuillotineTextureAtlas.cpp @@ -52,7 +52,7 @@ namespace Nz return nullptr; } - if (!newTexture->Update(image, Rectui(0, 0, image.GetWidth(), image.GetHeight()))) + if (!newTexture->Update(&image, Rectui(0, 0, image.GetWidth(), image.GetHeight()))) { NazaraError("Failed to update texture"); return nullptr; diff --git a/src/Nazara/Graphics/Model.cpp b/src/Nazara/Graphics/Model.cpp index b725caef8..5a6b1cfca 100644 --- a/src/Nazara/Graphics/Model.cpp +++ b/src/Nazara/Graphics/Model.cpp @@ -149,46 +149,6 @@ namespace Nz return false; } - /*! - * \brief Loads the model from file - * \return true if loading is successful - * - * \param filePath Path to the file - * \param params Parameters for the model - */ - - bool Model::LoadFromFile(const String& filePath, const ModelParameters& params) - { - return ModelLoader::LoadFromFile(this, filePath, params); - } - - /*! - * \brief Loads the model from memory - * \return true if loading is successful - * - * \param data Raw memory - * \param size Size of the memory - * \param params Parameters for the model - */ - - bool Model::LoadFromMemory(const void* data, std::size_t size, const ModelParameters& params) - { - return ModelLoader::LoadFromMemory(this, data, size, params); - } - - /*! - * \brief Loads the model from stream - * \return true if loading is successful - * - * \param stream Stream to the model - * \param params Parameters for the model - */ - - bool Model::LoadFromStream(Stream& stream, const ModelParameters& params) - { - return ModelLoader::LoadFromStream(this, stream, params); - } - /*! * \brief Sets the material of the named submesh * \return true If successful @@ -272,6 +232,43 @@ namespace Nz InvalidateBoundingVolume(); } + /*! + * \brief Loads the model from file + * \return true if loading is successful + * + * \param filePath Path to the file + * \param params Parameters for the model + */ + ModelRef Model::LoadFromFile(const String& filePath, const ModelParameters& params) + { + return ModelLoader::LoadFromFile(filePath, params); + } + + /*! + * \brief Loads the model from memory + * \return true if loading is successful + * + * \param data Raw memory + * \param size Size of the memory + * \param params Parameters for the model + */ + ModelRef Model::LoadFromMemory(const void* data, std::size_t size, const ModelParameters& params) + { + return ModelLoader::LoadFromMemory(data, size, params); + } + + /*! + * \brief Loads the model from stream + * \return true if loading is successful + * + * \param stream Stream to the model + * \param params Parameters for the model + */ + ModelRef Model::LoadFromStream(Stream& stream, const ModelParameters& params) + { + return ModelLoader::LoadFromStream(stream, params); + } + /* * \brief Makes the bounding volume of this billboard */ diff --git a/src/Nazara/Graphics/SkeletalModel.cpp b/src/Nazara/Graphics/SkeletalModel.cpp index 03d22f648..30ee9396d 100644 --- a/src/Nazara/Graphics/SkeletalModel.cpp +++ b/src/Nazara/Graphics/SkeletalModel.cpp @@ -220,46 +220,6 @@ namespace Nz return m_animationEnabled; } - /*! - * \brief Loads the skeleton model from file - * \return true if loading is successful - * - * \param filePath Path to the file - * \param params Parameters for the skeleton model - */ - - bool SkeletalModel::LoadFromFile(const String& filePath, const SkeletalModelParameters& params) - { - return SkeletalModelLoader::LoadFromFile(this, filePath, params); - } - - /*! - * \brief Loads the skeleton model from memory - * \return true if loading is successful - * - * \param data Raw memory - * \param size Size of the memory - * \param params Parameters for the skeleton model - */ - - bool SkeletalModel::LoadFromMemory(const void* data, std::size_t size, const SkeletalModelParameters& params) - { - return SkeletalModelLoader::LoadFromMemory(this, data, size, params); - } - - /*! - * \brief Loads the skeleton model from stream - * \return true if loading is successful - * - * \param stream Stream to the skeleton model - * \param params Parameters for the skeleton model - */ - - bool SkeletalModel::LoadFromStream(Stream& stream, const SkeletalModelParameters& params) - { - return SkeletalModelLoader::LoadFromStream(this, stream, params); - } - /*! * \brief Sets the animation for the model * \return true If successful @@ -432,6 +392,4 @@ namespace Nz /*if (m_animationEnabled && m_animation) AdvanceAnimation(m_scene->GetUpdateTime());*/ } - - SkeletalModelLoader::LoaderList SkeletalModel::s_loaders; } diff --git a/src/Nazara/Renderer/Texture.cpp b/src/Nazara/Renderer/Texture.cpp index bba567cf4..483f60709 100644 --- a/src/Nazara/Renderer/Texture.cpp +++ b/src/Nazara/Renderer/Texture.cpp @@ -54,7 +54,7 @@ namespace Nz Create(type, format, width, height, depth, levelCount); } - Texture::Texture(const Image& image) + Texture::Texture(const Image* image) { ErrorFlags flags(ErrorFlag_ThrowException); LoadFromImage(image); @@ -489,225 +489,6 @@ namespace Nz return m_impl != nullptr; } - bool Texture::LoadFromFile(const String& filePath, const ImageParams& params, bool generateMipmaps) - { - Image image; - if (!image.LoadFromFile(filePath, params)) - { - NazaraError("Failed to load image"); - return false; - } - - return LoadFromImage(image, generateMipmaps); - } - - bool Texture::LoadFromImage(const Image& image, bool generateMipmaps) - { - #if NAZARA_RENDERER_SAFE - if (!image.IsValid()) - { - NazaraError("Image must be valid"); - return false; - } - #endif - - // Vive le Copy-On-Write - Image newImage(image); - - PixelFormatType format = newImage.GetFormat(); - if (!IsFormatSupported(format)) - { - ///TODO: Sélectionner le format le plus adapté selon les composantes présentes dans le premier format - PixelFormatType newFormat = (PixelFormat::HasAlpha(format)) ? PixelFormatType_BGRA8 : PixelFormatType_BGR8; - NazaraWarning("Format " + PixelFormat::GetName(format) + " not supported, trying to convert it to " + PixelFormat::GetName(newFormat) + "..."); - - if (PixelFormat::IsConversionSupported(format, newFormat)) - { - if (newImage.Convert(newFormat)) - { - NazaraWarning("Conversion succeed"); - format = newFormat; - } - else - { - NazaraError("Conversion failed"); - return false; - } - } - else - { - NazaraError("Conversion not supported"); - return false; - } - } - - ImageType type = newImage.GetType(); - UInt8 levelCount = newImage.GetLevelCount(); - if (!Create(type, format, newImage.GetWidth(), newImage.GetHeight(), newImage.GetDepth(), (generateMipmaps) ? 0xFF : levelCount)) - { - NazaraError("Failed to create texture"); - return false; - } - - CallOnExit destroyOnExit([this]() - { - Destroy(); - }); - - if (type == ImageType_Cubemap) - { - for (UInt8 level = 0; level < levelCount; ++level) - { - for (unsigned int i = 0; i <= CubemapFace_Max; ++i) - { - if (!Update(newImage.GetConstPixels(0, 0, i, level), Rectui(0, 0, newImage.GetWidth(level), newImage.GetHeight(level)), i, level)) - { - NazaraError("Failed to update texture"); - return false; - } - } - } - } - else - { - for (UInt8 level = 0; level < levelCount; ++level) - { - if (!Update(newImage.GetConstPixels(0, 0, 0, level), level)) - { - NazaraError("Failed to update texture"); - return false; - } - } - } - - // Keep resource path info - SetFilePath(image.GetFilePath()); - - destroyOnExit.Reset(); - - return true; - } - - bool Texture::LoadFromMemory(const void* data, std::size_t size, const ImageParams& params, bool generateMipmaps) - { - Image image; - if (!image.LoadFromMemory(data, size, params)) - { - NazaraError("Failed to load image"); - return false; - } - - return LoadFromImage(image, generateMipmaps); - } - - bool Texture::LoadFromStream(Stream& stream, const ImageParams& params, bool generateMipmaps) - { - Image image; - if (!image.LoadFromStream(stream, params)) - { - NazaraError("Failed to load image"); - return false; - } - - return LoadFromImage(image, generateMipmaps); - } - - bool Texture::LoadArrayFromFile(const String& filePath, const ImageParams& imageParams, bool generateMipmaps, const Vector2ui& atlasSize) - { - Image cubemap; - if (!cubemap.LoadArrayFromFile(filePath, imageParams, atlasSize)) - { - NazaraError("Failed to load cubemap"); - return false; - } - - return LoadFromImage(cubemap, generateMipmaps); - } - - bool Texture::LoadArrayFromImage(const Image& image, bool generateMipmaps, const Vector2ui& atlasSize) - { - Image cubemap; - if (!cubemap.LoadArrayFromImage(image, atlasSize)) - { - NazaraError("Failed to load cubemap"); - return false; - } - - return LoadFromImage(cubemap, generateMipmaps); - } - - bool Texture::LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams, bool generateMipmaps, const Vector2ui& atlasSize) - { - Image cubemap; - if (!cubemap.LoadArrayFromMemory(data, size, imageParams, atlasSize)) - { - NazaraError("Failed to load cubemap"); - return false; - } - - return LoadFromImage(cubemap, generateMipmaps); - } - - bool Texture::LoadArrayFromStream(Stream& stream, const ImageParams& imageParams, bool generateMipmaps, const Vector2ui& atlasSize) - { - Image cubemap; - if (!cubemap.LoadArrayFromStream(stream, imageParams, atlasSize)) - { - NazaraError("Failed to load cubemap"); - return false; - } - - return LoadFromImage(cubemap, generateMipmaps); - } - - bool Texture::LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams, bool generateMipmaps, const CubemapParams& cubemapParams) - { - Image cubemap; - if (!cubemap.LoadCubemapFromFile(filePath, imageParams, cubemapParams)) - { - NazaraError("Failed to load cubemap"); - return false; - } - - return LoadFromImage(cubemap, generateMipmaps); - } - - bool Texture::LoadCubemapFromImage(const Image& image, bool generateMipmaps, const CubemapParams& params) - { - Image cubemap; - if (!cubemap.LoadCubemapFromImage(image, params)) - { - NazaraError("Failed to load cubemap"); - return false; - } - - return LoadFromImage(cubemap, generateMipmaps); - } - - bool Texture::LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams, bool generateMipmaps, const CubemapParams& cubemapParams) - { - Image cubemap; - if (!cubemap.LoadCubemapFromMemory(data, size, imageParams, cubemapParams)) - { - NazaraError("Failed to load cubemap"); - return false; - } - - return LoadFromImage(cubemap, generateMipmaps); - } - - bool Texture::LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams, bool generateMipmaps, const CubemapParams& cubemapParams) - { - Image cubemap; - if (!cubemap.LoadCubemapFromStream(stream, imageParams, cubemapParams)) - { - NazaraError("Failed to load cubemap"); - return false; - } - - return LoadFromImage(cubemap, generateMipmaps); - } - bool Texture::LoadFaceFromFile(CubemapFace face, const String& filePath, const ImageParams& params) { #if NAZARA_RENDERER_SAFE @@ -724,21 +505,21 @@ namespace Nz } #endif - Image image; - if (!image.LoadFromFile(filePath, params)) + ImageRef image = Image::LoadFromFile(filePath, params); + if (!image) { NazaraError("Failed to load image"); return false; } - if (!image.Convert(m_impl->format)) + if (!image->Convert(m_impl->format)) { NazaraError("Failed to convert image to texture format"); return false; } unsigned int faceSize = m_impl->width; - if (image.GetWidth() != faceSize || image.GetHeight() != faceSize) + if (image->GetWidth() != faceSize || image->GetHeight() != faceSize) { NazaraError("Image size must match texture face size"); return false; @@ -763,21 +544,21 @@ namespace Nz } #endif - Image image; - if (!image.LoadFromMemory(data, size, params)) + ImageRef image = Image::LoadFromMemory(data, size, params); + if (!image) { NazaraError("Failed to load image"); return false; } - if (!image.Convert(m_impl->format)) + if (!image->Convert(m_impl->format)) { NazaraError("Failed to convert image to texture format"); return false; } unsigned int faceSize = m_impl->width; - if (image.GetWidth() != faceSize || image.GetHeight() != faceSize) + if (image->GetWidth() != faceSize || image->GetHeight() != faceSize) { NazaraError("Image size must match texture face size"); return false; @@ -802,14 +583,14 @@ namespace Nz } #endif - Image image; - if (!image.LoadFromStream(stream, params)) + ImageRef image = Image::LoadFromStream(stream, params); + if (!image) { NazaraError("Failed to load image"); return false; } - if (!image.Convert(m_impl->format)) + if (!image->Convert(m_impl->format)) { NazaraError("Failed to convert image to texture format"); return false; @@ -817,7 +598,7 @@ namespace Nz unsigned int faceSize = m_impl->width; - if (image.GetWidth() != faceSize || image.GetHeight() != faceSize) + if (image->GetWidth() != faceSize || image->GetHeight() != faceSize) { NazaraError("Image size must match texture face size"); return false; @@ -879,82 +660,49 @@ namespace Nz return true; } - bool Texture::Update(const Image& image, UInt8 level) + bool Texture::Update(const Image* image, UInt8 level) { - #if NAZARA_RENDERER_SAFE - if (!image.IsValid()) - { - NazaraError("Image must be valid"); - return false; - } + NazaraAssert(image && image->IsValid(), "Invalid image"); + NazaraAssert(image->GetFormat() == m_impl->format, "Image format doesn't match texture format"); - if (image.GetFormat() != m_impl->format) - { - NazaraError("Image format does not match texture format"); - return false; - } - #endif - - const UInt8* pixels = image.GetConstPixels(0, 0, 0, level); + const UInt8* pixels = image->GetConstPixels(0, 0, 0, level); if (!pixels) { NazaraError("Failed to access image's pixels"); return false; } - return Update(pixels, image.GetWidth(level), image.GetHeight(level), level); + return Update(pixels, image->GetWidth(level), image->GetHeight(level), level); } - bool Texture::Update(const Image& image, const Boxui& box, UInt8 level) + bool Texture::Update(const Image* image, const Boxui& box, UInt8 level) { - #if NAZARA_RENDERER_SAFE - if (!image.IsValid()) - { - NazaraError("Image must be valid"); - return false; - } + NazaraAssert(image && image->IsValid(), "Invalid image"); + NazaraAssert(image->GetFormat() == m_impl->format, "Image format doesn't match texture format"); - if (image.GetFormat() != m_impl->format) - { - NazaraError("Image format does not match texture format"); - return false; - } - #endif - - const UInt8* pixels = image.GetConstPixels(0, 0, 0, level); + const UInt8* pixels = image->GetConstPixels(0, 0, 0, level); if (!pixels) { NazaraError("Failed to access image's pixels"); return false; } - return Update(pixels, box, image.GetWidth(level), image.GetHeight(level), level); + return Update(pixels, box, image->GetWidth(level), image->GetHeight(level), level); } - bool Texture::Update(const Image& image, const Rectui& rect, unsigned int z, UInt8 level) + bool Texture::Update(const Image* image, const Rectui& rect, unsigned int z, UInt8 level) { - #if NAZARA_RENDERER_SAFE - if (!image.IsValid()) - { - NazaraError("Image must be valid"); - return false; - } + NazaraAssert(image && image->IsValid(), "Invalid image"); + NazaraAssert(image->GetFormat() == m_impl->format, "Image format doesn't match texture format"); - if (image.GetFormat() != m_impl->format) - { - NazaraError("Image format does not match texture format"); - return false; - } - #endif - - const UInt8* pixels = image.GetConstPixels(0, 0, 0, level); + const UInt8* pixels = image->GetConstPixels(0, 0, 0, level); if (!pixels) { NazaraError("Failed to access image's pixels"); return false; } - return Update(pixels, rect, z, image.GetWidth(level), image.GetHeight(level), level); + return Update(pixels, rect, z, image->GetWidth(level), image->GetHeight(level), level); } bool Texture::Update(const UInt8* pixels, unsigned int srcWidth, unsigned int srcHeight, UInt8 level) @@ -1193,6 +941,214 @@ namespace Nz return false; } + TextureRef Texture::LoadFromFile(const String& filePath, const ImageParams& params, bool generateMipmaps) + { + ImageRef image = Image::LoadFromFile(filePath, params); + if (!image) + { + NazaraError("Failed to load image"); + return nullptr; + } + + return LoadFromImage(image, generateMipmaps); + } + + TextureRef Texture::LoadFromImage(const Image* image, bool generateMipmaps) + { + NazaraAssert(image && image->IsValid(), "Invalid image"); + + // Make use of COW + Image newImage(*image); + + PixelFormatType format = newImage.GetFormat(); + if (!IsFormatSupported(format)) + { + ///TODO: Sélectionner le format le plus adapté selon les composantes présentes dans le premier format + PixelFormatType newFormat = (PixelFormat::HasAlpha(format)) ? PixelFormatType_BGRA8 : PixelFormatType_BGR8; + NazaraWarning("Format " + PixelFormat::GetName(format) + " not supported, trying to convert it to " + PixelFormat::GetName(newFormat) + "..."); + + if (PixelFormat::IsConversionSupported(format, newFormat)) + { + if (newImage.Convert(newFormat)) + { + NazaraWarning("Conversion succeed"); + format = newFormat; + } + else + { + NazaraError("Conversion failed"); + return nullptr; + } + } + else + { + NazaraError("Conversion not supported"); + return nullptr; + } + } + + ImageType type = newImage.GetType(); + UInt8 levelCount = newImage.GetLevelCount(); + + TextureRef texture = New(); + if (!texture->Create(type, format, newImage.GetWidth(), newImage.GetHeight(), newImage.GetDepth(), (generateMipmaps) ? 0xFF : levelCount)) + { + NazaraError("Failed to create texture"); + return nullptr; + } + + if (type == ImageType_Cubemap) + { + for (UInt8 level = 0; level < levelCount; ++level) + { + for (unsigned int i = 0; i <= CubemapFace_Max; ++i) + { + if (!texture->Update(newImage.GetConstPixels(0, 0, i, level), Rectui(0, 0, newImage.GetWidth(level), newImage.GetHeight(level)), i, level)) + { + NazaraError("Failed to update texture"); + return nullptr; + } + } + } + } + else + { + for (UInt8 level = 0; level < levelCount; ++level) + { + if (!texture->Update(newImage.GetConstPixels(0, 0, 0, level), level)) + { + NazaraError("Failed to update texture"); + return nullptr; + } + } + } + + // Keep resource path info + texture->SetFilePath(image->GetFilePath()); + + return texture; + } + + TextureRef Texture::LoadFromMemory(const void* data, std::size_t size, const ImageParams& params, bool generateMipmaps) + { + ImageRef image = Image::LoadFromMemory(data, size, params); + if (!image) + { + NazaraError("Failed to load image"); + return nullptr; + } + + return LoadFromImage(image, generateMipmaps); + } + + TextureRef Texture::LoadFromStream(Stream& stream, const ImageParams& params, bool generateMipmaps) + { + ImageRef image = Image::LoadFromStream(stream, params); + if (!image) + { + NazaraError("Failed to load image"); + return nullptr; + } + + return LoadFromImage(image, generateMipmaps); + } + + TextureRef Texture::LoadArrayFromFile(const String& filePath, const ImageParams& imageParams, bool generateMipmaps, const Vector2ui& atlasSize) + { + ImageRef cubemap = Image::LoadArrayFromFile(filePath, imageParams, atlasSize); + if (!cubemap) + { + NazaraError("Failed to load cubemap"); + return nullptr; + } + + return LoadFromImage(cubemap, generateMipmaps); + } + + TextureRef Texture::LoadArrayFromImage(const Image* image, bool generateMipmaps, const Vector2ui& atlasSize) + { + ImageRef cubemap = Image::LoadArrayFromImage(image, atlasSize); + if (!cubemap) + { + NazaraError("Failed to load cubemap"); + return nullptr; + } + + return LoadFromImage(cubemap, generateMipmaps); + } + + TextureRef Texture::LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams, bool generateMipmaps, const Vector2ui& atlasSize) + { + ImageRef cubemap = Image::LoadArrayFromMemory(data, size, imageParams, atlasSize); + if (!cubemap) + { + NazaraError("Failed to load cubemap"); + return nullptr; + } + + return LoadFromImage(cubemap, generateMipmaps); + } + + TextureRef Texture::LoadArrayFromStream(Stream& stream, const ImageParams& imageParams, bool generateMipmaps, const Vector2ui& atlasSize) + { + ImageRef cubemap = Image::LoadArrayFromStream(stream, imageParams, atlasSize); + if (!cubemap) + { + NazaraError("Failed to load cubemap"); + return nullptr; + } + + return LoadFromImage(cubemap, generateMipmaps); + } + + TextureRef Texture::LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams, bool generateMipmaps, const CubemapParams& cubemapParams) + { + ImageRef cubemap = Image::LoadCubemapFromFile(filePath, imageParams, cubemapParams); + if (!cubemap) + { + NazaraError("Failed to load cubemap"); + return nullptr; + } + + return LoadFromImage(cubemap, generateMipmaps); + } + + TextureRef Texture::LoadCubemapFromImage(const Image* image, bool generateMipmaps, const CubemapParams& params) + { + ImageRef cubemap = Image::LoadCubemapFromImage(image, params); + if (!cubemap) + { + NazaraError("Failed to load cubemap"); + return nullptr; + } + + return LoadFromImage(cubemap, generateMipmaps); + } + + TextureRef Texture::LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams, bool generateMipmaps, const CubemapParams& cubemapParams) + { + ImageRef cubemap = Image::LoadCubemapFromMemory(data, size, imageParams, cubemapParams); + if (!cubemap) + { + NazaraError("Failed to load cubemap"); + return nullptr; + } + + return LoadFromImage(cubemap, generateMipmaps); + } + + TextureRef Texture::LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams, bool generateMipmaps, const CubemapParams& cubemapParams) + { + ImageRef cubemap = Image::LoadCubemapFromStream(stream, imageParams, cubemapParams); + if (!cubemap) + { + NazaraError("Failed to load cubemap"); + return nullptr; + } + + return LoadFromImage(cubemap, generateMipmaps); + } + bool Texture::CreateTexture(bool proxy) { OpenGL::Format openGLFormat; diff --git a/src/Nazara/Utility/Animation.cpp b/src/Nazara/Utility/Animation.cpp index f851a430b..d60e095ee 100644 --- a/src/Nazara/Utility/Animation.cpp +++ b/src/Nazara/Utility/Animation.cpp @@ -261,21 +261,6 @@ namespace Nz return m_impl != nullptr; } - bool Animation::LoadFromFile(const String& filePath, const AnimationParams& params) - { - return AnimationLoader::LoadFromFile(this, filePath, params); - } - - bool Animation::LoadFromMemory(const void* data, std::size_t size, const AnimationParams& params) - { - return AnimationLoader::LoadFromMemory(this, data, size, params); - } - - bool Animation::LoadFromStream(Stream& stream, const AnimationParams& params) - { - return AnimationLoader::LoadFromStream(this, stream, params); - } - void Animation::RemoveSequence(const String& identifier) { NazaraAssert(m_impl, "Animation not created"); @@ -304,6 +289,21 @@ namespace Nz m_impl->sequences.erase(it); } + AnimationRef Animation::LoadFromFile(const String& filePath, const AnimationParams& params) + { + return AnimationLoader::LoadFromFile(filePath, params); + } + + AnimationRef Animation::LoadFromMemory(const void* data, std::size_t size, const AnimationParams& params) + { + return AnimationLoader::LoadFromMemory(data, size, params); + } + + AnimationRef Animation::LoadFromStream(Stream& stream, const AnimationParams& params) + { + return AnimationLoader::LoadFromStream(stream, params); + } + bool Animation::Initialize() { if (!AnimationLibrary::Initialize()) diff --git a/src/Nazara/Utility/Font.cpp b/src/Nazara/Utility/Font.cpp index a0264b9ee..731557628 100644 --- a/src/Nazara/Utility/Font.cpp +++ b/src/Nazara/Utility/Font.cpp @@ -280,21 +280,6 @@ namespace Nz return true; } - bool Font::OpenFromFile(const String& filePath, const FontParams& params) - { - return FontLoader::LoadFromFile(this, filePath, params); - } - - bool Font::OpenFromMemory(const void* data, std::size_t size, const FontParams& params) - { - return FontLoader::LoadFromMemory(this, data, size, params); - } - - bool Font::OpenFromStream(Stream& stream, const FontParams& params) - { - return FontLoader::LoadFromStream(this, stream, params); - } - void Font::SetAtlas(const std::shared_ptr& atlas) { if (m_atlas != atlas) @@ -358,10 +343,8 @@ namespace Nz if (!s_defaultFont) { - FontRef cabin = Font::New(); - if (cabin->OpenFromMemory(r_cabinRegular, sizeof(r_cabinRegular))) - s_defaultFont = cabin; - else + s_defaultFont = Font::OpenFromMemory(r_cabinRegular, sizeof(r_cabinRegular)); + if (!s_defaultFont) NazaraError("Failed to open default font"); } @@ -378,6 +361,21 @@ namespace Nz return s_defaultMinimumStepSize; } + FontRef Font::OpenFromFile(const String& filePath, const FontParams& params) + { + return FontLoader::LoadFromFile(filePath, params); + } + + FontRef Font::OpenFromMemory(const void* data, std::size_t size, const FontParams& params) + { + return FontLoader::LoadFromMemory(data, size, params); + } + + FontRef Font::OpenFromStream(Stream& stream, const FontParams& params) + { + return FontLoader::LoadFromStream(stream, params); + } + void Font::SetDefaultAtlas(const std::shared_ptr& atlas) { s_defaultAtlas = atlas; diff --git a/src/Nazara/Utility/Formats/DDSLoader.cpp b/src/Nazara/Utility/Formats/DDSLoader.cpp index dd24a1469..e4c6f2d57 100644 --- a/src/Nazara/Utility/Formats/DDSLoader.cpp +++ b/src/Nazara/Utility/Formats/DDSLoader.cpp @@ -38,7 +38,7 @@ namespace Nz return (magic == DDS_Magic) ? Ternary_True : Ternary_False; } - static bool Load(Image* image, Stream& stream, const ImageParams& parameters) + static ImageRef Load(Stream& stream, const ImageParams& parameters) { NazaraUnused(parameters); @@ -81,14 +81,14 @@ namespace Nz // First, identify the type ImageType type; if (!IdentifyImageType(header, headerDX10, &type)) - return false; + return nullptr; // Then the format PixelFormatType format; if (!IdentifyPixelFormat(header, headerDX10, &format)) - return false; + return nullptr; - image->Create(type, format, width, height, depth, levelCount); + ImageRef image = Image::New(type, format, width, height, depth, levelCount); // Read all mipmap levels for (unsigned int i = 0; i < image->GetLevelCount(); i++) @@ -100,7 +100,7 @@ namespace Nz if (byteStream.Read(ptr, byteCount) != byteCount) { NazaraError("Failed to read level #" + String::Number(i)); - return false; + return nullptr; } if (width > 1) @@ -117,7 +117,7 @@ namespace Nz if (parameters.loadFormat != PixelFormatType_Undefined) image->Convert(parameters.loadFormat); - return true; + return image; } private: diff --git a/src/Nazara/Utility/Formats/FreeTypeLoader.cpp b/src/Nazara/Utility/Formats/FreeTypeLoader.cpp index f6ab78b1d..2cd2c51e3 100644 --- a/src/Nazara/Utility/Formats/FreeTypeLoader.cpp +++ b/src/Nazara/Utility/Formats/FreeTypeLoader.cpp @@ -361,7 +361,7 @@ namespace Nz return Ternary_False; } - bool LoadFile(Font* font, const String& filePath, const FontParams& parameters) + FontRef LoadFile(const String& filePath, const FontParams& parameters) { NazaraUnused(parameters); @@ -370,25 +370,26 @@ namespace Nz if (!face->SetFile(filePath)) { NazaraError("Failed to open file"); - return false; + return nullptr; } if (!face->Open()) { NazaraError("Failed to open face"); - return false; + return nullptr; } + FontRef font = Font::New(); if (font->Create(face.get())) { face.release(); - return true; + return font; } else - return false; + return nullptr; } - bool LoadMemory(Font* font, const void* data, std::size_t size, const FontParams& parameters) + FontRef LoadMemory(const void* data, std::size_t size, const FontParams& parameters) { NazaraUnused(parameters); @@ -398,19 +399,20 @@ namespace Nz if (!face->Open()) { NazaraError("Failed to open face"); - return false; + return nullptr; } + FontRef font = Font::New(); if (font->Create(face.get())) { face.release(); - return true; + return font; } else - return false; + return nullptr; } - bool LoadStream(Font* font, Stream& stream, const FontParams& parameters) + FontRef LoadStream(Stream& stream, const FontParams& parameters) { NazaraUnused(parameters); @@ -420,16 +422,17 @@ namespace Nz if (!face->Open()) { NazaraError("Failed to open face"); - return false; + return nullptr; } + FontRef font = Font::New(); if (font->Create(face.get())) { face.release(); - return true; + return font; } else - return false; + return nullptr; } } @@ -439,7 +442,7 @@ namespace Nz { if (FT_Init_FreeType(&s_library) == 0) { - s_libraryOwner.reset(new FreeTypeLibrary); + s_libraryOwner = std::make_shared(); FontLoader::RegisterLoader(IsSupported, Check, LoadStream, LoadFile, LoadMemory); } else diff --git a/src/Nazara/Utility/Formats/MD2Loader.cpp b/src/Nazara/Utility/Formats/MD2Loader.cpp index ac7d6e5d7..b58799978 100644 --- a/src/Nazara/Utility/Formats/MD2Loader.cpp +++ b/src/Nazara/Utility/Formats/MD2Loader.cpp @@ -46,13 +46,13 @@ namespace Nz return Ternary_False; } - bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) + MeshRef Load(Stream& stream, const MeshParams& parameters) { MD2_Header header; if (stream.Read(&header, sizeof(MD2_Header)) != sizeof(MD2_Header)) { NazaraError("Failed to read header"); - return false; + return nullptr; } #ifdef NAZARA_BIG_ENDIAN @@ -76,14 +76,15 @@ namespace Nz if (stream.GetSize() < header.offset_end) { NazaraError("Incomplete MD2 file"); - return false; + return nullptr; } // Since the engine no longer supports keyframe animations, let's make a static mesh + MeshRef mesh = Nz::Mesh::New(); if (!mesh->CreateStatic()) { NazaraInternalError("Failed to create mesh"); - return false; + return nullptr; } // Extract skins (texture name) @@ -253,7 +254,7 @@ namespace Nz if (parameters.center) mesh->Recenter(); - return true; + return mesh; } } diff --git a/src/Nazara/Utility/Formats/MD5AnimLoader.cpp b/src/Nazara/Utility/Formats/MD5AnimLoader.cpp index e67389409..84f0baeaf 100644 --- a/src/Nazara/Utility/Formats/MD5AnimLoader.cpp +++ b/src/Nazara/Utility/Formats/MD5AnimLoader.cpp @@ -28,7 +28,7 @@ namespace Nz return parser.Check(); } - bool Load(Animation* animation, Stream& stream, const AnimationParams& /*parameters*/) + AnimationRef Load(Stream& stream, const AnimationParams& /*parameters*/) { ///TODO: Utiliser les paramètres MD5AnimParser parser(stream); @@ -36,7 +36,7 @@ namespace Nz if (!parser.Parse()) { NazaraError("MD5Anim parser failed"); - return false; + return nullptr; } const MD5AnimParser::Frame* frames = parser.GetFrames(); @@ -46,6 +46,7 @@ namespace Nz UInt32 jointCount = parser.GetJointCount(); // À ce stade, nous sommes censés avoir assez d'informations pour créer l'animation + AnimationRef animation = Animation::New(); animation->CreateSkeletal(frameCount, jointCount); Sequence sequence; @@ -84,7 +85,7 @@ namespace Nz } } - return true; + return animation; } } diff --git a/src/Nazara/Utility/Formats/MD5MeshLoader.cpp b/src/Nazara/Utility/Formats/MD5MeshLoader.cpp index 84197e1c9..31b3a64a7 100644 --- a/src/Nazara/Utility/Formats/MD5MeshLoader.cpp +++ b/src/Nazara/Utility/Formats/MD5MeshLoader.cpp @@ -35,13 +35,13 @@ namespace Nz return parser.Check(); } - bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) + MeshRef Load(Stream& stream, const MeshParams& parameters) { MD5MeshParser parser(stream); if (!parser.Parse()) { NazaraError("MD5Mesh parser failed"); - return false; + return nullptr; } // Pour que le squelette soit correctement aligné, il faut appliquer un quaternion "de correction" aux joints à la base du squelette @@ -62,6 +62,7 @@ namespace Nz if (parameters.animated) { + MeshRef mesh = Mesh::New(); mesh->CreateSkeletal(jointCount); Skeleton* skeleton = mesh->GetSkeleton(); @@ -218,13 +219,16 @@ namespace Nz mesh->SetAnimation(path); } } + + return mesh; } else { + MeshRef mesh = Mesh::New(); if (!mesh->CreateStatic()) // Ne devrait jamais échouer { NazaraInternalError("Failed to create mesh"); - return false; + return nullptr; } mesh->SetMaterialCount(meshCount); @@ -309,9 +313,9 @@ namespace Nz if (parameters.center) mesh->Recenter(); - } - return true; + return mesh; + } } } diff --git a/src/Nazara/Utility/Formats/OBJLoader.cpp b/src/Nazara/Utility/Formats/OBJLoader.cpp index 23a569337..b8ff362f1 100644 --- a/src/Nazara/Utility/Formats/OBJLoader.cpp +++ b/src/Nazara/Utility/Formats/OBJLoader.cpp @@ -153,7 +153,7 @@ namespace Nz return true; } - bool Load(Mesh* mesh, Stream& stream, const MeshParams& parameters) + MeshRef Load(Stream& stream, const MeshParams& parameters) { long long reservedVertexCount; if (!parameters.custom.GetIntegerParameter("NativeOBJLoader_VertexCount", &reservedVertexCount)) @@ -163,9 +163,10 @@ namespace Nz if (!parser.Parse(stream, reservedVertexCount)) { NazaraError("OBJ parser failed"); - return false; + return nullptr; } + MeshRef mesh = Mesh::New(); mesh->CreateStatic(); const String* materials = parser.GetMaterials(); @@ -341,7 +342,7 @@ namespace Nz ParseMTL(mesh, stream.GetDirectory() + mtlLib, materials, meshes, meshCount); } - return true; + return mesh; } } diff --git a/src/Nazara/Utility/Formats/PCXLoader.cpp b/src/Nazara/Utility/Formats/PCXLoader.cpp index bb0e1b43b..5de1aa29d 100644 --- a/src/Nazara/Utility/Formats/PCXLoader.cpp +++ b/src/Nazara/Utility/Formats/PCXLoader.cpp @@ -61,7 +61,7 @@ namespace Nz return Ternary_False; } - bool Load(Image* image, Stream& stream, const ImageParams& parameters) + ImageRef Load(Stream& stream, const ImageParams& parameters) { NazaraUnused(parameters); @@ -69,7 +69,7 @@ namespace Nz if (stream.Read(&header, sizeof(pcx_header)) != sizeof(pcx_header)) { NazaraError("Failed to read header"); - return false; + return nullptr; } #ifdef NAZARA_BIG_ENDIAN @@ -91,10 +91,11 @@ namespace Nz unsigned int width = header.xmax - header.xmin+1; unsigned int height = header.ymax - header.ymin+1; + ImageRef image = Image::New(); if (!image->Create(ImageType_2D, PixelFormatType_RGB8, width, height, 1, (parameters.levelCount > 0) ? parameters.levelCount : 1)) { NazaraError("Failed to create image"); - return false; + return nullptr; } UInt8* pixels = image->GetPixels(); @@ -119,7 +120,7 @@ namespace Nz if (!stream.Read(&rle_value, 1)) { NazaraError("Failed to read stream (byte " + String::Number(stream.GetCursorPos()) + ')'); - return false; + return nullptr; } if (rle_value < 0xc0) @@ -130,7 +131,7 @@ namespace Nz if (!stream.Read(&rle_value, 1)) { NazaraError("Failed to read stream (byte " + String::Number(stream.GetCursorPos()) + ')'); - return false; + return nullptr; } } } @@ -174,7 +175,7 @@ namespace Nz if (!stream.Read(&rle_value, 1)) { NazaraError("Failed to read stream (byte " + String::Number(stream.GetCursorPos()) + ')'); - return false; + return nullptr; } if (rle_value < 0xc0) @@ -185,7 +186,7 @@ namespace Nz if (!stream.Read(&rle_value, 1)) { NazaraError("Failed to read stream (byte " + String::Number(stream.GetCursorPos()) + ')'); - return false; + return nullptr; } } } @@ -225,21 +226,21 @@ namespace Nz if (!stream.Read(&magic, 1)) { NazaraError("Failed to read stream (byte " + String::Number(stream.GetCursorPos()) + ')'); - return false; + return nullptr; } /* first byte must be equal to 0x0c (12) */ if (magic != 0x0c) { NazaraError("Colormap's first byte must be 0x0c (0x" + String::Number(magic, 16) + ')'); - return false; + return nullptr; } /* read palette */ if (stream.Read(palette, 768) != 768) { NazaraError("Failed to read palette"); - return false; + return nullptr; } stream.SetCursorPos(curPos); @@ -258,7 +259,7 @@ namespace Nz if (!stream.Read(&rle_value, 1)) { NazaraError("Failed to read stream (byte " + String::Number(stream.GetCursorPos()) + ')'); - return false; + return nullptr; } if (rle_value < 0xc0) @@ -269,7 +270,7 @@ namespace Nz if (!stream.Read(&rle_value, 1)) { NazaraError("Failed to read stream (byte " + String::Number(stream.GetCursorPos()) + ')'); - return false; + return nullptr; } } } @@ -302,7 +303,7 @@ namespace Nz if (!stream.Read(&rle_value, 1)) { NazaraError("Failed to read stream (byte " + String::Number(stream.GetCursorPos()) + ')'); - return false; + return nullptr; } if (rle_value < 0xc0) @@ -313,7 +314,7 @@ namespace Nz if (!stream.Read(&rle_value, 1)) { NazaraError("Failed to read stream (byte " + String::Number(stream.GetCursorPos()) + ')'); - return false; + return nullptr; } } } @@ -329,13 +330,13 @@ namespace Nz default: NazaraError("Unsupported " + String::Number(bitCount) + " bitcount for pcx files"); - return false; + return nullptr; } if (parameters.loadFormat != PixelFormatType_Undefined) image->Convert(parameters.loadFormat); - return true; + return image; } } diff --git a/src/Nazara/Utility/Formats/STBLoader.cpp b/src/Nazara/Utility/Formats/STBLoader.cpp index c7fcc7e8f..132886175 100644 --- a/src/Nazara/Utility/Formats/STBLoader.cpp +++ b/src/Nazara/Utility/Formats/STBLoader.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -54,7 +55,7 @@ namespace Nz return Ternary_False; } - bool Load(Image* image, Stream& stream, const ImageParams& parameters) + ImageRef Load(Stream& stream, const ImageParams& parameters) { // Je charge tout en RGBA8 et je converti ensuite via la méthode Convert // Ceci à cause d'un bug de STB lorsqu'il s'agit de charger certaines images (ex: JPG) en "default" @@ -64,24 +65,29 @@ namespace Nz if (!ptr) { NazaraError("Failed to load image: " + String(stbi_failure_reason())); - return false; + return nullptr; } + CallOnExit freeStbiImage([ptr]() + { + stbi_image_free(ptr); + }); + + ImageRef image = Image::New(); if (!image->Create(ImageType_2D, PixelFormatType_RGBA8, width, height, 1, (parameters.levelCount > 0) ? parameters.levelCount : 1)) { NazaraError("Failed to create image"); - stbi_image_free(ptr); - - return false; + return nullptr; } image->Update(ptr); - stbi_image_free(ptr); + + freeStbiImage.CallAndReset(); if (parameters.loadFormat != PixelFormatType_Undefined) image->Convert(parameters.loadFormat); - return true; + return image; } } diff --git a/src/Nazara/Utility/GuillotineImageAtlas.cpp b/src/Nazara/Utility/GuillotineImageAtlas.cpp index 74cff70db..4660a69b8 100644 --- a/src/Nazara/Utility/GuillotineImageAtlas.cpp +++ b/src/Nazara/Utility/GuillotineImageAtlas.cpp @@ -166,8 +166,7 @@ namespace Nz std::unique_ptr newImage(new Image(ImageType_2D, PixelFormatType_A8, size.x, size.y)); if (oldImage) { - Image& image = *static_cast(oldImage); - newImage->Copy(image, Rectui(size), Vector2ui(0, 0)); // Copie des anciennes données + newImage->Copy(static_cast(oldImage), Rectui(size), Vector2ui(0, 0)); // Copie des anciennes données } return newImage.release(); diff --git a/src/Nazara/Utility/Image.cpp b/src/Nazara/Utility/Image.cpp index 81a810e1a..da5ec120c 100644 --- a/src/Nazara/Utility/Image.cpp +++ b/src/Nazara/Utility/Image.cpp @@ -106,7 +106,7 @@ namespace Nz for (unsigned int i = 0; i < levels.size(); ++i) { unsigned int pixelsPerFace = width * height; - levels[i].reset(new UInt8[pixelsPerFace * depth * PixelFormat::GetBytesPerPixel(newFormat)]); + levels[i] = std::make_unique(pixelsPerFace * depth * PixelFormat::GetBytesPerPixel(newFormat)); UInt8* dst = levels[i].get(); UInt8* src = m_sharedImage->levels[i].get(); @@ -143,29 +143,13 @@ namespace Nz return true; } - void Image::Copy(const Image& source, const Boxui& srcBox, const Vector3ui& dstPos) + void Image::Copy(const Image* source, const Boxui& srcBox, const Vector3ui& dstPos) { - #if NAZARA_UTILITY_SAFE - if (m_sharedImage == &emptyImage) - { - NazaraError("Image must be valid"); - return; - } + NazaraAssert(IsValid(), "Invalid image"); + NazaraAssert(source && source->IsValid(), "Invalid source image"); + NazaraAssert(source->GetFormat() == m_sharedImage->format, "Image formats don't match"); - if (!source.IsValid()) - { - NazaraError("Source image must be valid"); - return; - } - - if (source.GetFormat() != m_sharedImage->format) - { - NazaraError("Source image format does not match destination image format"); - return; - } - #endif - - const UInt8* srcPtr = source.GetConstPixels(srcBox.x, srcBox.y, srcBox.z); + const UInt8* srcPtr = source->GetConstPixels(srcBox.x, srcBox.y, srcBox.z); #if NAZARA_UTILITY_SAFE if (!srcPtr) { @@ -177,7 +161,7 @@ namespace Nz UInt8 bpp = PixelFormat::GetBytesPerPixel(m_sharedImage->format); UInt8* dstPtr = GetPixelPtr(m_sharedImage->levels[0].get(), bpp, dstPos.x, dstPos.y, dstPos.z, m_sharedImage->width, m_sharedImage->height); - Copy(dstPtr, srcPtr, m_sharedImage->format, srcBox.width, srcBox.height, srcBox.depth, m_sharedImage->width, m_sharedImage->height, source.GetWidth(), source.GetHeight()); + Copy(dstPtr, srcPtr, m_sharedImage->format, srcBox.width, srcBox.height, srcBox.depth, m_sharedImage->width, m_sharedImage->height, source->GetWidth(), source->GetHeight()); } bool Image::Create(ImageType type, PixelFormatType format, unsigned int width, unsigned int height, unsigned int depth, UInt8 levelCount) @@ -271,7 +255,7 @@ namespace Nz // Cette allocation est protégée car sa taille dépend directement de paramètres utilisateurs try { - levels[i].reset(new UInt8[PixelFormat::ComputeSize(format, w, h, d)]); + levels[i] = std::make_unique(PixelFormat::ComputeSize(format, w, h, d)); if (w > 1) w >>= 1; @@ -337,12 +321,12 @@ namespace Nz // Les images 3D et cubemaps sont stockés de la même façon unsigned int depth = (m_sharedImage->type == ImageType_Cubemap) ? 6 : m_sharedImage->depth; - for (unsigned int i = 0; i < levels.size(); ++i) + for (auto & level : levels) { std::size_t size = PixelFormat::ComputeSize(m_sharedImage->format, width, height, depth); - levels[i].reset(new UInt8[size]); + level = std::make_unique(size); - UInt8* ptr = levels[i].get(); + UInt8* ptr = level.get(); UInt8* end = &ptr[size]; while (ptr < end) @@ -514,9 +498,9 @@ namespace Nz unsigned int width = m_sharedImage->width; unsigned int height = m_sharedImage->height; unsigned int depth = (m_sharedImage->type == ImageType_Cubemap) ? 6 : m_sharedImage->depth; - for (unsigned int level = 0; level < m_sharedImage->levels.size(); ++level) + for (auto& level : m_sharedImage->levels) { - UInt8* ptr = m_sharedImage->levels[level].get(); + UInt8* ptr = level.get(); if (!PixelFormat::Flip(PixelFlipping_Horizontally, m_sharedImage->format, width, height, depth, ptr, ptr)) { NazaraError("Failed to flip image"); @@ -557,9 +541,9 @@ namespace Nz unsigned int width = m_sharedImage->width; unsigned int height = m_sharedImage->height; unsigned int depth = (m_sharedImage->type == ImageType_Cubemap) ? 6 : m_sharedImage->depth; - for (unsigned int level = 0; level < m_sharedImage->levels.size(); ++level) + for (auto& level : m_sharedImage->levels) { - UInt8* ptr = m_sharedImage->levels[level].get(); + UInt8* ptr = level.get(); if (!PixelFormat::Flip(PixelFlipping_Vertically, m_sharedImage->format, width, height, depth, ptr, ptr)) { NazaraError("Failed to flip image"); @@ -805,7 +789,7 @@ namespace Nz return Vector3ui(GetLevelSize(m_sharedImage->width, level), GetLevelSize(m_sharedImage->height, level), GetLevelSize(m_sharedImage->depth, level)); } - ImageType Image::GetType() const + ImageType Image::GetType() const { return m_sharedImage->type; } @@ -865,67 +849,48 @@ namespace Nz return m_sharedImage != &emptyImage; } - bool Image::LoadFromFile(const String& filePath, const ImageParams& params) - { - return ImageLoader::LoadFromFile(this, filePath, params); - } - - bool Image::LoadFromMemory(const void* data, std::size_t size, const ImageParams& params) - { - return ImageLoader::LoadFromMemory(this, data, size, params); - } - - bool Image::LoadFromStream(Stream& stream, const ImageParams& params) - { - return ImageLoader::LoadFromStream(this, stream, params); - } - // LoadArray - bool Image::LoadArrayFromFile(const String& filePath, const ImageParams& imageParams, const Vector2ui& atlasSize) + ImageRef Image::LoadArrayFromFile(const String& filePath, const ImageParams& imageParams, const Vector2ui& atlasSize) { - Image image; - if (!image.LoadFromFile(filePath, imageParams)) + ImageRef image = Image::LoadFromFile(filePath, imageParams); + if (!image) { NazaraError("Failed to load image"); - return false; + return nullptr; } return LoadArrayFromImage(image, atlasSize); } - bool Image::LoadArrayFromImage(const Image& image, const Vector2ui& atlasSize) + ImageRef Image::LoadArrayFromImage(const Image* image, const Vector2ui& atlasSize) { - #if NAZARA_UTILITY_SAFE - if (!image.IsValid()) - { - NazaraError("Image must be valid"); - return false; - } + NazaraAssert(image && image->IsValid(), "Invalid image"); + #if NAZARA_UTILITY_SAFE if (atlasSize.x == 0) { NazaraError("Atlas width must be over zero"); - return false; + return nullptr; } if (atlasSize.y == 0) { NazaraError("Atlas height must be over zero"); - return false; + return nullptr; } #endif - ImageType type = image.GetType(); + ImageType type = image->GetType(); #if NAZARA_UTILITY_SAFE if (type != ImageType_1D && type != ImageType_2D) { NazaraError("Image type not handled (0x" + String::Number(type, 16) + ')'); - return false; + return nullptr; } #endif - Vector2ui imageSize(image.GetWidth(), image.GetHeight()); + Vector2ui imageSize(image->GetWidth(), image->GetHeight()); if (imageSize.x % atlasSize.x != 0) { @@ -941,82 +906,85 @@ namespace Nz unsigned int layerCount = atlasSize.x*atlasSize.y; + ImageRef arrayImage = New(); // Selon le type de l'image de base, on va créer un array d'images 2D ou 1D if (type == ImageType_2D) - Create(ImageType_2D_Array, image.GetFormat(), faceSize.x, faceSize.y, layerCount); + arrayImage->Create(ImageType_2D_Array, image->GetFormat(), faceSize.x, faceSize.y, layerCount); else - Create(ImageType_1D_Array, image.GetFormat(), faceSize.x, layerCount); + arrayImage->Create(ImageType_1D_Array, image->GetFormat(), faceSize.x, layerCount); + + if (!arrayImage->IsValid()) + { + NazaraError("Failed to create image"); + return nullptr; + } unsigned int layer = 0; for (unsigned int j = 0; j < atlasSize.y; ++j) for (unsigned int i = 0; i < atlasSize.x; ++i) - Copy(image, Rectui(i*faceSize.x, j*faceSize.y, faceSize.x, faceSize.y), Vector3ui(0, 0, layer++)); + arrayImage->Copy(image, Rectui(i*faceSize.x, j*faceSize.y, faceSize.x, faceSize.y), Vector3ui(0, 0, layer++)); - return true; + return arrayImage; } - bool Image::LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams, const Vector2ui& atlasSize) + ImageRef Image::LoadArrayFromMemory(const void* data, std::size_t size, const ImageParams& imageParams, const Vector2ui& atlasSize) { - Image image; - if (!image.LoadFromMemory(data, size, imageParams)) + ImageRef image = Image::LoadFromMemory(data, size, imageParams); + if (!image) { NazaraError("Failed to load image"); - return false; + return nullptr; } return LoadArrayFromImage(image, atlasSize); } - bool Image::LoadArrayFromStream(Stream& stream, const ImageParams& imageParams, const Vector2ui& atlasSize) + ImageRef Image::LoadArrayFromStream(Stream& stream, const ImageParams& imageParams, const Vector2ui& atlasSize) { - Image image; - if (!image.LoadFromStream(stream, imageParams)) + ImageRef image = Image::LoadFromStream(stream, imageParams); + if (!image) { NazaraError("Failed to load image"); - return false; + return nullptr; } return LoadArrayFromImage(image, atlasSize); } - bool Image::LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams, const CubemapParams& cubemapParams) + ImageRef Image::LoadCubemapFromFile(const String& filePath, const ImageParams& imageParams, const CubemapParams& cubemapParams) { - Image image; - if (!image.LoadFromFile(filePath, imageParams)) + ImageRef image = Image::LoadFromFile(filePath, imageParams); + if (!image) { NazaraError("Failed to load image"); - return false; + return nullptr; } return LoadCubemapFromImage(image, cubemapParams); } - bool Image::LoadCubemapFromImage(const Image& image, const CubemapParams& params) + ImageRef Image::LoadCubemapFromImage(const Image* image, const CubemapParams& params) { - #if NAZARA_UTILITY_SAFE - if (!image.IsValid()) - { - NazaraError("Image must be valid"); - return false; - } + NazaraAssert(image && image->IsValid(), "Invalid image"); - ImageType type = image.GetType(); + #if NAZARA_UTILITY_SAFE + ImageType type = image->GetType(); if (type != ImageType_2D) { NazaraError("Image type not handled (0x" + String::Number(type, 16) + ')'); - return false; + return nullptr; } #endif - unsigned int width = image.GetWidth(); - unsigned int height = image.GetHeight(); + unsigned int width = image->GetWidth(); + unsigned int height = image->GetHeight(); unsigned int faceSize = (params.faceSize == 0) ? std::max(width, height)/4 : params.faceSize; // Sans cette vérification, celles des rectangles pourrait réussir via un overflow if (width < faceSize || height < faceSize) { NazaraError("Image is too small for this face size"); - return false; + return nullptr; } // Calcul et vérification des surfaces @@ -1027,84 +995,80 @@ namespace Nz if (backPos.x > limitX || backPos.y > limitY) { NazaraError("Back rectangle is out of image"); - return false; + return nullptr; } Vector2ui downPos = params.downPosition * faceSize; if (downPos.x > limitX || downPos.y > limitY) { NazaraError("Down rectangle is out of image"); - return false; + return nullptr; } Vector2ui forwardPos = params.forwardPosition * faceSize; if (forwardPos.x > limitX || forwardPos.y > limitY) { NazaraError("Forward rectangle is out of image"); - return false; + return nullptr; } Vector2ui leftPos = params.leftPosition * faceSize; if (leftPos.x > limitX || leftPos.y > limitY) { NazaraError("Left rectangle is out of image"); - return false; + return nullptr; } Vector2ui rightPos = params.rightPosition * faceSize; if (rightPos.x > limitX || rightPos.y > limitY) { NazaraError("Right rectangle is out of image"); - return false; + return nullptr; } Vector2ui upPos = params.upPosition * faceSize; if (upPos.x > limitX || upPos.y > limitY) { NazaraError("Up rectangle is out of image"); - return false; + return nullptr; } - Create(ImageType_Cubemap, image.GetFormat(), faceSize, faceSize); - - #ifdef NAZARA_DEBUG - // Les paramètres sont valides, que Create ne fonctionne pas relèverait d'un bug - if (m_sharedImage == &emptyImage) + ImageRef cubemap = New(); + if (!cubemap->Create(ImageType_Cubemap, image->GetFormat(), faceSize, faceSize)) { - NazaraInternalError("Failed to create cubemap"); - return false; + NazaraError("Failed to create cubemap"); + return nullptr; } - #endif - Copy(image, Rectui(backPos.x, backPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_NegativeZ)); - Copy(image, Rectui(downPos.x, downPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_NegativeY)); - Copy(image, Rectui(forwardPos.x, forwardPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_PositiveZ)); - Copy(image, Rectui(leftPos.x, leftPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_NegativeX)); - Copy(image, Rectui(rightPos.x, rightPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_PositiveX)); - Copy(image, Rectui(upPos.x, upPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_PositiveY)); + cubemap->Copy(image, Rectui(backPos.x, backPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_NegativeZ)); + cubemap->Copy(image, Rectui(downPos.x, downPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_NegativeY)); + cubemap->Copy(image, Rectui(forwardPos.x, forwardPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_PositiveZ)); + cubemap->Copy(image, Rectui(leftPos.x, leftPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_NegativeX)); + cubemap->Copy(image, Rectui(rightPos.x, rightPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_PositiveX)); + cubemap->Copy(image, Rectui(upPos.x, upPos.y, faceSize, faceSize), Vector3ui(0, 0, CubemapFace_PositiveY)); - return true; + return cubemap; } - bool Image::LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams, const CubemapParams& cubemapParams) + ImageRef Image::LoadCubemapFromMemory(const void* data, std::size_t size, const ImageParams& imageParams, const CubemapParams& cubemapParams) { - Image image; - if (!image.LoadFromMemory(data, size, imageParams)) + ImageRef image = Image::LoadFromMemory(data, size, imageParams); + if (!image) { NazaraError("Failed to load image"); - return false; + return nullptr; } return LoadCubemapFromImage(image, cubemapParams); } - bool Image::LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams, const CubemapParams& cubemapParams) + ImageRef Image::LoadCubemapFromStream(Stream& stream, const ImageParams& imageParams, const CubemapParams& cubemapParams) { - Image image; - if (!image.LoadFromStream(stream, imageParams)) + ImageRef image = Image::LoadFromStream(stream, imageParams); + if (!image) { NazaraError("Failed to load image"); - return false; + return nullptr; } return LoadCubemapFromImage(image, cubemapParams); @@ -1114,21 +1078,21 @@ namespace Nz { NazaraAssert(IsValid() && IsCubemap(), "Texture must be a valid cubemap"); - Image image; - if (!image.LoadFromFile(filePath, params)) + ImageRef image = Image::LoadFromFile(filePath, params); + if (!image) { NazaraError("Failed to load image"); return false; } - if (!image.Convert(GetFormat())) + if (!image->Convert(GetFormat())) { NazaraError("Failed to convert image to texture format"); return false; } unsigned int faceSize = GetWidth(); - if (image.GetWidth() != faceSize || image.GetHeight() != faceSize) + if (image->GetWidth() != faceSize || image->GetHeight() != faceSize) { NazaraError("Image size must match texture face size"); return false; @@ -1142,21 +1106,21 @@ namespace Nz { NazaraAssert(IsValid() && IsCubemap(), "Texture must be a valid cubemap"); - Image image; - if (!image.LoadFromMemory(data, size, params)) + ImageRef image = Image::LoadFromMemory(data, size, params); + if (!image) { NazaraError("Failed to load image"); return false; } - if (!image.Convert(GetFormat())) + if (!image->Convert(GetFormat())) { NazaraError("Failed to convert image to texture format"); return false; } unsigned int faceSize = GetWidth(); - if (image.GetWidth() != faceSize || image.GetHeight() != faceSize) + if (image->GetWidth() != faceSize || image->GetHeight() != faceSize) { NazaraError("Image size must match texture face size"); return false; @@ -1170,21 +1134,21 @@ namespace Nz { NazaraAssert(IsValid() && IsCubemap(), "Texture must be a valid cubemap"); - Image image; - if (!image.LoadFromStream(stream, params)) + ImageRef image = Image::LoadFromStream(stream, params); + if (!image) { NazaraError("Failed to load image"); return false; } - if (!image.Convert(GetFormat())) + if (!image->Convert(GetFormat())) { NazaraError("Failed to convert image to texture format"); return false; } unsigned int faceSize = GetWidth(); - if (image.GetWidth() != faceSize || image.GetHeight() != faceSize) + if (image->GetWidth() != faceSize || image->GetHeight() != faceSize) { NazaraError("Image size must match texture face size"); return false; @@ -1232,7 +1196,7 @@ namespace Nz m_sharedImage->levels.resize(levelCount); for (UInt8 i = oldLevelCount; i < maxLevelCount; ++i) - m_sharedImage->levels[i].reset(new UInt8[GetMemoryUsage(i)]); + m_sharedImage->levels[i] = std::make_unique(GetMemoryUsage(i)); } bool Image::SetPixelColor(const Color& color, unsigned int x, unsigned int y, unsigned int z) @@ -1463,7 +1427,21 @@ namespace Nz NazaraError("Image type not handled (0x" + String::Number(type, 16) + ')'); return 0; + } + ImageRef Image::LoadFromFile(const String& filePath, const ImageParams& params) + { + return ImageLoader::LoadFromFile(filePath, params); + } + + ImageRef Image::LoadFromMemory(const void* data, std::size_t size, const ImageParams& params) + { + return ImageLoader::LoadFromMemory(data, size, params); + } + + ImageRef Image::LoadFromStream(Stream& stream, const ImageParams& params) + { + return ImageLoader::LoadFromStream(stream, params); } void Image::EnsureOwnership() @@ -1477,7 +1455,7 @@ namespace Nz for (unsigned int i = 0; i < levels.size(); ++i) { std::size_t size = GetMemoryUsage(i); - levels[i].reset(new UInt8[size]); + levels[i] = std::make_unique(size); std::memcpy(levels[i].get(), m_sharedImage->levels[i].get(), size); } diff --git a/src/Nazara/Utility/Mesh.cpp b/src/Nazara/Utility/Mesh.cpp index 015ee520d..890577de4 100644 --- a/src/Nazara/Utility/Mesh.cpp +++ b/src/Nazara/Utility/Mesh.cpp @@ -521,21 +521,6 @@ namespace Nz return m_isValid; } - bool Mesh::LoadFromFile(const String& filePath, const MeshParams& params) - { - return MeshLoader::LoadFromFile(this, filePath, params); - } - - bool Mesh::LoadFromMemory(const void* data, std::size_t size, const MeshParams& params) - { - return MeshLoader::LoadFromMemory(this, data, size, params); - } - - bool Mesh::LoadFromStream(Stream& stream, const MeshParams& params) - { - return MeshLoader::LoadFromStream(this, stream, params); - } - void Mesh::Recenter() { NazaraAssert(m_isValid, "Mesh should be created first"); @@ -663,6 +648,21 @@ namespace Nz } } + MeshRef Mesh::LoadFromFile(const String& filePath, const MeshParams& params) + { + return MeshLoader::LoadFromFile(filePath, params); + } + + MeshRef Mesh::LoadFromMemory(const void* data, std::size_t size, const MeshParams& params) + { + return MeshLoader::LoadFromMemory(data, size, params); + } + + MeshRef Mesh::LoadFromStream(Stream& stream, const MeshParams& params) + { + return MeshLoader::LoadFromStream(stream, params); + } + bool Mesh::Initialize() { if (!MeshLibrary::Initialize()) diff --git a/tests/Engine/Audio/Music.cpp b/tests/Engine/Audio/Music.cpp index 404c57c5f..2e0edd8c3 100644 --- a/tests/Engine/Audio/Music.cpp +++ b/tests/Engine/Audio/Music.cpp @@ -16,22 +16,22 @@ SCENARIO("Music", "[AUDIO][MUSIC]") THEN("We can ask the informations of the file") { - REQUIRE(music.GetDuration() <= 64000); // 1 min 03 = 63s = 63000ms - REQUIRE(music.GetDuration() >= 63000); - REQUIRE(music.GetFormat() == Nz::AudioFormat_Stereo); - REQUIRE(music.GetPlayingOffset() == 0); - REQUIRE(music.GetSampleCount() <= 5644800); // 64s * 44100 Hz * 2 (stereo) - REQUIRE(music.GetSampleCount() >= 5556600); // 63s * 44100 Hz * 2 (stereo) - REQUIRE(music.GetSampleRate() == 44100 /* Hz */); - REQUIRE(music.GetStatus() == Nz::SoundStatus_Stopped); - REQUIRE(music.IsLooping() == false); + CHECK(music.GetDuration() <= 64000); // 1 min 03 = 63s = 63000ms + CHECK(music.GetDuration() >= 63000); + CHECK(music.GetFormat() == Nz::AudioFormat_Stereo); + CHECK(music.GetPlayingOffset() == 0); + CHECK(music.GetSampleCount() <= 5644800); // 64s * 44100 Hz * 2 (stereo) + CHECK(music.GetSampleCount() >= 5556600); // 63s * 44100 Hz * 2 (stereo) + CHECK(music.GetSampleRate() == 44100 /* Hz */); + CHECK(music.GetStatus() == Nz::SoundStatus_Stopped); + CHECK(music.IsLooping() == false); } THEN("We can play it and get the time offset") { Nz::Audio::SetGlobalVolume(0.f); - music.Play(); + music.Play(); Nz::Thread::Sleep(1000); REQUIRE(music.GetPlayingOffset() >= 950); Nz::Thread::Sleep(200); diff --git a/tests/Engine/Audio/SoundBuffer.cpp b/tests/Engine/Audio/SoundBuffer.cpp index ed5f2f6c6..292a1e98e 100644 --- a/tests/Engine/Audio/SoundBuffer.cpp +++ b/tests/Engine/Audio/SoundBuffer.cpp @@ -5,16 +5,15 @@ SCENARIO("SoundBuffer", "[AUDIO][SOUNDBUFFER]") { GIVEN("A sound buffer") { - Nz::SoundBuffer soundBuffer; - WHEN("We load our sound") { - REQUIRE(soundBuffer.LoadFromFile("resources/Engine/Audio/Cat.flac")); + Nz::SoundBufferRef soundBuffer = Nz::SoundBuffer::LoadFromFile("resources/Engine/Audio/Cat.flac"); + REQUIRE(soundBuffer.IsValid()); THEN("We can ask the informations of the file") { - REQUIRE(soundBuffer.GetDuration() <= 8500); // 8s = 8000ms - REQUIRE(soundBuffer.GetDuration() >= 8000); + REQUIRE(soundBuffer->GetDuration() <= 8500); // 8s = 8000ms + REQUIRE(soundBuffer->GetDuration() >= 8000); } } } diff --git a/tests/Engine/Graphics/Billboard.cpp b/tests/Engine/Graphics/Billboard.cpp index 651274bfd..376d990b1 100644 --- a/tests/Engine/Graphics/Billboard.cpp +++ b/tests/Engine/Graphics/Billboard.cpp @@ -9,8 +9,7 @@ SCENARIO("Billboard", "[GRAPHICS][BILLBOARD]") WHEN("We assign it to another") { - Nz::MaterialRef materialRef = Nz::Material::New(); - materialRef->LoadFromFile("resources/Engine/Graphics/Nazara.png"); + Nz::MaterialRef materialRef = Nz::Material::LoadFromFile("resources/Engine/Graphics/Nazara.png"); Nz::Color materialColor = materialRef->GetDiffuseColor(); Nz::BillboardRef otherBillboard = Nz::Billboard::New(materialRef); diff --git a/tests/Engine/Graphics/Model.cpp b/tests/Engine/Graphics/Model.cpp index 270d15a0e..89c1988f0 100644 --- a/tests/Engine/Graphics/Model.cpp +++ b/tests/Engine/Graphics/Model.cpp @@ -12,8 +12,8 @@ SCENARIO("Model", "[GRAPHICS][MODEL]") Nz::ModelParameters params; params.mesh.optimizeIndexBuffers = false; - Nz::ModelRef model = Nz::Model::New(); - REQUIRE(model->LoadFromFile("resources/Engine/Graphics/dragon_recon/dragon_vrip_res4.obj", params)); + Nz::ModelRef model = Nz::Model::LoadFromFile("resources/Engine/Graphics/dragon_recon/dragon_vrip_res4.obj", params); + REQUIRE(model); REQUIRE(model->GetMaterialCount() == 1); REQUIRE(model->GetSkin() == 0); diff --git a/tests/Engine/Graphics/SkeletalModel.cpp b/tests/Engine/Graphics/SkeletalModel.cpp index 87d2e43f1..95d819c9a 100644 --- a/tests/Engine/Graphics/SkeletalModel.cpp +++ b/tests/Engine/Graphics/SkeletalModel.cpp @@ -5,21 +5,20 @@ SCENARIO("SkeletalModel", "[GRAPHICS][SKELETALMODEL]") { GIVEN("A default skeletal model") { - Nz::SkeletalModel skeletalModel; - Nz::AnimationRef animation = Nz::Animation::New(); - WHEN("We can load the bob lamp") { - REQUIRE(skeletalModel.LoadFromFile("resources/Engine/Graphics/Bob lamp/bob_lamp_update.md5mesh")); - REQUIRE(animation->LoadFromFile("resources/Engine/Graphics/Bob lamp/bob_lamp_update.md5anim")); - skeletalModel.SetAnimation(animation); + Nz::AnimationRef animation = Nz::Animation::LoadFromFile("resources/Engine/Graphics/Bob lamp/bob_lamp_update.md5anim"); + Nz::SkeletalModelRef skeletalModel = Nz::StaticRefCast(Nz::SkeletalModel::LoadFromFile("resources/Engine/Graphics/Bob lamp/bob_lamp_update.md5mesh")); + REQUIRE(skeletalModel); + REQUIRE(animation); + skeletalModel->SetAnimation(animation); THEN("We can enable its animation") { - REQUIRE(skeletalModel.HasAnimation()); - skeletalModel.EnableAnimation(true); - skeletalModel.AdvanceAnimation(0.10f); - REQUIRE(skeletalModel.IsAnimationEnabled()); + REQUIRE(skeletalModel->HasAnimation()); + skeletalModel->EnableAnimation(true); + skeletalModel->AdvanceAnimation(0.10f); + REQUIRE(skeletalModel->IsAnimationEnabled()); } } } diff --git a/tests/Engine/Graphics/SkyboxBackground.cpp b/tests/Engine/Graphics/SkyboxBackground.cpp index 36ceb0db5..c2b1910ab 100644 --- a/tests/Engine/Graphics/SkyboxBackground.cpp +++ b/tests/Engine/Graphics/SkyboxBackground.cpp @@ -5,8 +5,7 @@ SCENARIO("SkyboxBackground", "[GRAPHICS][SKYBOXBACKGROUND]") { GIVEN("A skybox background with a loaded image") { - Nz::TextureRef textureRef = Nz::Texture::New(); - textureRef->LoadCubemapFromFile("resources/Engine/Graphics/skybox.png"); + Nz::TextureRef textureRef = Nz::Texture::LoadCubemapFromFile("resources/Engine/Graphics/skybox.png"); Nz::SkyboxBackgroundRef skyboxBackgroundRef = Nz::SkyboxBackground::New(textureRef); WHEN("We assign it parameters") diff --git a/tests/Engine/Graphics/TextureBackground.cpp b/tests/Engine/Graphics/TextureBackground.cpp index 33178d87f..ff89cc46f 100644 --- a/tests/Engine/Graphics/TextureBackground.cpp +++ b/tests/Engine/Graphics/TextureBackground.cpp @@ -5,8 +5,7 @@ SCENARIO("TextureBackground", "[GRAPHICS][TEXTUREBACKGROUND]") { GIVEN("A default texture background") { - Nz::TextureRef textureRef = Nz::Texture::New(); - textureRef->LoadFromFile("resources/Engine/Graphics/skybox.png"); + Nz::TextureRef textureRef = Nz::Texture::LoadFromFile("resources/Engine/Graphics/skybox.png"); Nz::TextureBackgroundRef textureBackgroundRef = Nz::TextureBackground::New(textureRef); WHEN("We assign it parameters") @@ -17,4 +16,4 @@ SCENARIO("TextureBackground", "[GRAPHICS][TEXTUREBACKGROUND]") } } } -} \ No newline at end of file +} From c4cf6d2f53d1230239b64be6cbe1db756ef25b7b Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 29 Oct 2018 22:06:09 +0100 Subject: [PATCH 194/194] Graphics/BasicRenderQueue: Extends maximum layer count to 65535 --- src/Nazara/Graphics/BasicRenderQueue.cpp | 106 +++++++++++------------ 1 file changed, 50 insertions(+), 56 deletions(-) diff --git a/src/Nazara/Graphics/BasicRenderQueue.cpp b/src/Nazara/Graphics/BasicRenderQueue.cpp index 2068a21ff..ece80a421 100644 --- a/src/Nazara/Graphics/BasicRenderQueue.cpp +++ b/src/Nazara/Graphics/BasicRenderQueue.cpp @@ -742,14 +742,14 @@ namespace Nz basicSprites.Sort([&](const SpriteChain& vertices) { // RQ index: - // - Layer (4bits) + // - Layer (16bits) // - Pipeline (8bits) // - Material (8bits) // - Shader? (8bits) // - Textures (8bits) // - Overlay (8bits) // - Scissor (4bits) - // - Depth? (16bits) + // - ??? (4bits) UInt64 layerIndex = m_layerCache[vertices.layerIndex]; UInt64 pipelineIndex = GetOrInsert(m_pipelineCache, vertices.material->GetPipeline()); @@ -758,16 +758,14 @@ namespace Nz UInt64 textureIndex = GetOrInsert(m_textureCache, vertices.material->GetDiffuseMap()); UInt64 overlayIndex = GetOrInsert(m_overlayCache, vertices.overlay); UInt64 scissorIndex = 0; //< TODO - UInt64 depthIndex = 0; //< TODO - UInt64 index = (layerIndex & 0x0F) << 60 | - (pipelineIndex & 0xFF) << 52 | - (materialIndex & 0xFF) << 44 | - (shaderIndex & 0xFF) << 36 | - (textureIndex & 0xFF) << 28 | - (overlayIndex & 0xFF) << 20 | - (scissorIndex & 0x0F) << 16 | - (depthIndex & 0xFFFF) << 0; + UInt64 index = (layerIndex & 0xFFFF) << 48 | + (pipelineIndex & 0xFF) << 40 | + (materialIndex & 0xFF) << 32 | + (shaderIndex & 0xFF) << 24 | + (textureIndex & 0xFF) << 16 | + (overlayIndex & 0xFF) << 8 | + (scissorIndex & 0x0F) << 4; return index; }); @@ -775,14 +773,13 @@ namespace Nz billboards.Sort([&](const BillboardChain& billboard) { // RQ index: - // - Layer (4bits) + // - Layer (16bits) // - Pipeline (8bits) // - Material (8bits) // - Shader? (8bits) // - Textures (8bits) - // - ??? (8bits) // - Scissor (4bits) - // - Depth? (16bits) + // - ??? (12bits) UInt64 layerIndex = m_layerCache[billboard.layerIndex]; UInt64 pipelineIndex = GetOrInsert(m_pipelineCache, billboard.material->GetPipeline()); @@ -791,16 +788,14 @@ namespace Nz UInt64 textureIndex = GetOrInsert(m_textureCache, billboard.material->GetDiffuseMap()); UInt64 unknownIndex = 0; //< ??? UInt64 scissorIndex = 0; //< TODO - UInt64 depthIndex = 0; //< TODO? - UInt64 index = (layerIndex & 0x0F) << 60 | - (pipelineIndex & 0xFF) << 52 | - (materialIndex & 0xFF) << 44 | - (shaderIndex & 0xFF) << 36 | - (textureIndex & 0xFF) << 28 | - (unknownIndex & 0xFF) << 20 | - (scissorIndex & 0x0F) << 16 | - (depthIndex & 0xFFFF) << 0; + UInt64 index = (layerIndex & 0xFFFF) << 48 | + (pipelineIndex & 0xFF) << 40 | + (materialIndex & 0xFF) << 32 | + (shaderIndex & 0xFF) << 24 | + (textureIndex & 0xFF) << 16 | + (scissorIndex & 0x0F) << 12 | + (unknownIndex & 0xFF) << 0; return index; }); @@ -808,11 +803,11 @@ namespace Nz customDrawables.Sort([&](const CustomDrawable& drawable) { // RQ index: - // - Layer (4bits) + // - Layer (16bits) UInt64 layerIndex = m_layerCache[drawable.layerIndex]; - UInt64 index = (layerIndex & 0x0F) << 60; + UInt64 index = (layerIndex & 0xFFFF) << 48; return index; @@ -821,14 +816,14 @@ namespace Nz models.Sort([&](const Model& renderData) { // RQ index: - // - Layer (4bits) + // - Layer (16bits) // - Pipeline (8bits) // - Material (8bits) // - Shader? (8bits) // - Textures (8bits) // - Buffers (8bits) // - Scissor (4bits) - // - Depth? (16bits) + // - ??? (4bits) UInt64 layerIndex = m_layerCache[renderData.layerIndex]; UInt64 pipelineIndex = GetOrInsert(m_pipelineCache, renderData.material->GetPipeline()); @@ -839,14 +834,13 @@ namespace Nz UInt64 scissorIndex = 0; //< TODO UInt64 depthIndex = 0; //< TODO - UInt64 index = (layerIndex & 0x0F) << 60 | - (pipelineIndex & 0xFF) << 52 | - (materialIndex & 0xFF) << 44 | - (shaderIndex & 0xFF) << 36 | - (textureIndex & 0xFF) << 28 | - (bufferIndex & 0xFF) << 20 | - (scissorIndex & 0x0F) << 16 | - (depthIndex & 0xFFFF) << 0; + UInt64 index = (layerIndex & 0xFFFF) << 48 | + (pipelineIndex & 0xFF) << 40 | + (materialIndex & 0xFF) << 32 | + (shaderIndex & 0xFF) << 24 | + (textureIndex & 0xFF) << 16 | + (bufferIndex & 0xFF) << 8 | + (scissorIndex & 0x0F) << 4; return index; }); @@ -864,19 +858,19 @@ namespace Nz depthSortedBillboards.Sort([&](const Billboard& billboard) { // RQ index: - // - Layer (4bits) + // - Layer (16bits) // - Depth (32bits) - // - ?? (28bits) + // - ?? (16bits) // Reinterpret depth as UInt32 (this will work as long as they're all either positive or negative, - // a negative distance may happen with billboard behind the camera which we don't care about since they'll be rendered) + // a negative distance may happen with billboard behind the camera which we don't care about since they'll not be rendered) float depth = nearPlane.Distance(billboard.data.center); UInt64 layerIndex = m_layerCache[billboard.layerIndex]; UInt64 depthIndex = ~reinterpret_cast(depth); - UInt64 index = (layerIndex & 0x0F) << 60 | - (depthIndex & 0xFFFFFFFF) << 28; + UInt64 index = (layerIndex & 0xFFFF) << 48 | + (depthIndex & 0xFFFFFFFF) << 16; return index; }); @@ -886,17 +880,17 @@ namespace Nz depthSortedModels.Sort([&](const Model& model) { // RQ index: - // - Layer (4bits) + // - Layer (16bits) // - Depth (32bits) - // - ?? (28bits) + // - ?? (16bits) float depth = nearPlane.Distance(model.obbSphere.GetPosition()); UInt64 layerIndex = m_layerCache[model.layerIndex]; UInt64 depthIndex = ~reinterpret_cast(depth); - UInt64 index = (layerIndex & 0x0F) << 60 | - (depthIndex & 0xFFFFFFFF) << 28; + UInt64 index = (layerIndex & 0xFFFF) << 48 | + (depthIndex & 0xFFFFFFFF) << 16; return index; }); @@ -904,17 +898,17 @@ namespace Nz depthSortedSprites.Sort([&](const SpriteChain& spriteChain) { // RQ index: - // - Layer (4bits) + // - Layer (16bits) // - Depth (32bits) - // - ?? (28bits) + // - ?? (16bits) float depth = nearPlane.Distance(spriteChain.vertices[0].position); UInt64 layerIndex = m_layerCache[spriteChain.layerIndex]; UInt64 depthIndex = ~reinterpret_cast(depth); - UInt64 index = (layerIndex & 0x0F) << 60 | - (depthIndex & 0xFFFFFFFF) << 28; + UInt64 index = (layerIndex & 0xFFFF) << 48 | + (depthIndex & 0xFFFFFFFF) << 16; return index; }); @@ -926,17 +920,17 @@ namespace Nz depthSortedModels.Sort([&](const Model& model) { // RQ index: - // - Layer (4bits) + // - Layer (16bits) // - Depth (32bits) - // - ?? (28bits) + // - ?? (16bits) float depth = viewerPos.SquaredDistance(model.obbSphere.GetPosition()); UInt64 layerIndex = m_layerCache[model.layerIndex]; UInt64 depthIndex = ~reinterpret_cast(depth); - UInt64 index = (layerIndex & 0x0F) << 60 | - (depthIndex & 0xFFFFFFFF) << 28; + UInt64 index = (layerIndex & 0x0F) << 48 | + (depthIndex & 0xFFFFFFFF) << 16; return index; }); @@ -944,17 +938,17 @@ namespace Nz depthSortedSprites.Sort([&](const SpriteChain& sprites) { // RQ index: - // - Layer (4bits) + // - Layer (16bits) // - Depth (32bits) - // - ?? (28bits) + // - ?? (16bits) float depth = viewerPos.SquaredDistance(sprites.vertices[0].position); UInt64 layerIndex = m_layerCache[sprites.layerIndex]; UInt64 depthIndex = ~reinterpret_cast(depth); - UInt64 index = (layerIndex & 0x0F) << 60 | - (depthIndex & 0xFFFFFFFF) << 28; + UInt64 index = (layerIndex & 0xFFFF) << 48 | + (depthIndex & 0xFFFFFFFF) << 16; return index; });